-
-
Notifications
You must be signed in to change notification settings - Fork 0
138 lines (132 loc) · 5.34 KB
/
release.yml
File metadata and controls
138 lines (132 loc) · 5.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
name: release
on:
push:
# Replace with your own release branch. or add an entirely different condition.
branches:
- release
jobs:
create-release:
name: create-release
runs-on: ubuntu-latest
# Change your project's configs here.
outputs:
upload_url: ${{ steps.release.outputs.upload_url }}
# FILE EXPORT CONFIGURATION.
release_version: 0.1.0 # Change your version here.
bin_name: template # You might want to change it to your preferred export name.
# END OF CONFIGURATION.
steps:
- name: Create Release
id: release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# RELEASE TAB CONFIGURATION.
tag_name: 0.1.0 # Change your version here.
release_name: 📦 Template 0.1.0 # You might want to change it to your preferred release name.
prerelease: true # Set too false to create a "stable release".
draft: false # Set to true to create a draft release. This will keep your release private, and you would need to manually publish it.
# END OF CONFIGURATION.
build-release:
name: build-release
needs: ['create-release']
runs-on: ${{ matrix.os }}
env:
# For some builds, we use cross to test on 32-bit and big-endian
# systems.
CARGO: cargo
# When CARGO is set to CROSS, this is set to `--target matrix.target`.
TARGET_FLAGS: ""
# When CARGO is set to CROSS, TARGET_DIR includes matrix.target.
TARGET_DIR: ./target
# Emit backtraces on panics.
RUST_BACKTRACE: 1
strategy:
matrix:
build: [macos, win-msvc, linux]
include:
- build: linux
os: ubuntu-20.04
rust: nightly
target: x86_64-unknown-linux-gnu
- build: macos
os: macos-latest
rust: nightly
target: x86_64-apple-darwin
- build: win-msvc
os: windows-2019
rust: nightly
target: x86_64-pc-windows-msvc
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 1
- name: Install packages (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev libgtk-3-dev # libgtk-3-dev is used by rfd
# - name: Install packages (macOS)
# if: matrix.os == 'macos-latest'
# run: |
# ci/macos-install-packages
- name: Install Rust
uses: dtolnay/rust-toolchain@v1
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
- name: Use Normal As Hell Cargo
shell: bash
run: |
# cargo install cross
echo "CARGO=cargo" >> $GITHUB_ENV
echo "TARGET_FLAGS=--target ${{ matrix.target }}" >> $GITHUB_ENV
echo "TARGET_DIR=./target/${{ matrix.target }}" >> $GITHUB_ENV
- name: Show command used for Cargo
run: |
echo "cargo command is: ${{ env.CARGO }}"
echo "target flag is: ${{ env.TARGET_FLAGS }}"
echo "target dir is: ${{ env.TARGET_DIR }}"
- name: Build release binary
run: ${{ env.CARGO }} build --verbose --release ${{ env.TARGET_FLAGS }}
# - name: Strip release binary (linux and macos)
# if: matrix.build == 'linux' || matrix.build == 'macos'
# run: strip "target/${{ matrix.target }}/release/rg"
#
# - name: Strip release binary (arm)
# if: matrix.build == 'linux-arm'
# run: |
# docker run --rm -v \
# "$PWD/target:/target:Z" \
# rustembedded/cross:arm-unknown-linux-gnueabihf \
# arm-linux-gnueabihf-strip \
# /target/arm-unknown-linux-gnueabihf/release/rg
- name: Build archive
shell: bash
run: |
# outdir="$(ci/cargo-out-dir "${{ env.TARGET_DIR }}")"
staging="${{ needs.create-release.outputs.bin_name }}-${{ needs.create-release.outputs.release_version }}-${{ matrix.target }}"
mkdir "$staging"
# mkdir -p "$staging"/{complete,doc}
cp README.md "$staging/"
# cp {CHANGELOG.md,FAQ.md,GUIDE.md} "$staging/doc/"
if [ "${{ matrix.os }}" = "windows-2019" ]; then
cp "target/${{ matrix.target }}/release/${{ needs.create-release.outputs.bin_name }}.exe" "$staging/"
7z a "$staging.zip" "$staging"
echo "ASSET=$staging.zip" >> $GITHUB_ENV
else
# The man page is only generated on Unix systems. ¯\_(ツ)_/¯
# cp "$outdir"/${{ needs.create-release.outputs.bin_name }}.1 "$staging/doc/"
cp "target/${{ matrix.target }}/release/${{ needs.create-release.outputs.bin_name }}" "$staging/"
tar czf "$staging.tar.gz" "$staging"
echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV
fi
- name: Upload release archive
uses: actions/upload-release-asset@v1.0.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create-release.outputs.upload_url }}
asset_path: ${{ env.ASSET }}
asset_name: ${{ env.ASSET }}
asset_content_type: application/octet-stream