-
Notifications
You must be signed in to change notification settings - Fork 8
131 lines (113 loc) · 3.63 KB
/
release.yml
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
name: Release
on:
push:
tags:
# x.y.z version format
- "[0-9]+.[0-9]+.[0-9]+"
env:
CARGO_TERM_COLOR: always
jobs:
create-release:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Get the release version from the tag
run: |
echo "DRA_VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
- name: Print release version
run: |
echo "Version is: $DRA_VERSION"
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
./scripts/create-github-release.sh "$DRA_VERSION"
# NOTE: always set shell: bash, otherwise on Windows there might be problems!
build:
name: ${{ matrix.job.os }}
needs: [ create-release ]
runs-on: ${{ matrix.job.runner }}
strategy:
fail-fast: false
matrix:
job:
- os: linux
runner: ubuntu-22.04
target: x86_64-unknown-linux-gnu
use-cross: false
- os: linux-musl
runner: ubuntu-22.04
target: x86_64-unknown-linux-musl
use-cross: true
- os: linux-armv6
runner: ubuntu-22.04
target: arm-unknown-linux-gnueabihf
use-cross: true
- os: linux-arm64
runner: ubuntu-22.04
target: aarch64-unknown-linux-gnu
use-cross: true
- os: macos
runner: macos-latest
target: x86_64-apple-darwin
use-cross: false
- os: windows
runner: windows-latest
target: x86_64-pc-windows-msvc
use-cross: false
steps:
- uses: actions/checkout@v4
- name: Get the release version from the tag
shell: bash
run: |
echo "DRA_VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
- name: Install prerequisites
shell: bash
run: |
case ${{ matrix.job.os }} in
linux-armv6) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
linux-arm64) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
esac
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: "${{ matrix.job.target }}"
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
if: matrix.job.use-cross == true
with:
tool: cross
- name: Setup build tools
if: matrix.job.use-cross == true
shell: bash
run: |
echo "CARGO_BIN=cross" >>$GITHUB_ENV
- name: Export cargo target
shell: bash
run: echo "CARGO_TARGET=${{ matrix.job.target }}" >>$GITHUB_ENV
- name: Build release binary
shell: bash
run: make release
- name: Build archive
id: build_archive
shell: bash
run: |
asset=$(./scripts/create-release-archive.sh "$DRA_VERSION" "${{ matrix.job.os }}" "$CARGO_TARGET")
echo "ARCHIVE=$asset" >> $GITHUB_OUTPUT
- name: Upload assets
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
./scripts/upload-github-release-assets.sh \
"$DRA_VERSION" \
${{ steps.build_archive.outputs.ARCHIVE }}
- name: Build and upload debian package
if: matrix.job.os == 'linux'
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cargo install cargo-deb
deb_file=$(./scripts/create-deb.sh "$CARGO_TARGET")
./scripts/upload-github-release-assets.sh "$DRA_VERSION" "$deb_file"