-
Notifications
You must be signed in to change notification settings - Fork 0
176 lines (167 loc) · 4.85 KB
/
ci.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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
on: [push]
name: Continuous integration
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: check
test:
name: Test Suite
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- ubuntu-latest
- windows-latest
- macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: test
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add clippy
- uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings -D clippy::pedantic
build-release-linux:
needs: [check, test, fmt, clippy]
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- ubuntu-latest
arch:
- x86_64
- aarch64
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
target: ${{ matrix.arch }}-unknown-linux-gnu
- run: sudo apt install -y gcc-aarch64-linux-gnu
if: "${{ matrix.arch == 'aarch64' }}"
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --target ${{ matrix.arch }}-unknown-linux-gnu
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-artifact@v4
with:
name: ubpkg-${{ matrix.runs-on }}-${{ matrix.arch }}
path: target/${{ matrix.arch }}-unknown-linux-gnu/release/ubpkg
build-release-mac:
needs: [check, test, fmt, clippy]
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
target: x86_64-apple-darwin
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --target=x86_64-apple-darwin
- uses: actions-rs/cargo@v1
with:
command: build
args: --release --target=aarch64-apple-darwin
- run: lipo -create -output target/ubpkg target/x86_64-apple-darwin/release/ubpkg target/aarch64-apple-darwin/release/ubpkg
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-artifact@v4
with:
name: ubpkg-${{ matrix.runs-on }}
path: target/ubpkg
build-release-windows:
needs: [check, test, fmt, clippy]
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
runs-on:
- windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: build
args: --release
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-artifact@v4
with:
name: ubpkg-${{ matrix.runs-on }}
path: target/release/ubpkg.exe
create-release:
needs: [build-release-linux,build-release-mac,build-release-windows]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Create release
run: |
mv ubpkg-ubuntu-latest-x86_64/ubpkg ubpkg-linux-x86_64
mv ubpkg-ubuntu-latest-aarch64/ubpkg ubpkg-linux-aarch64
mv ubpkg-macos-latest/ubpkg ubpkg-macos
mv ubpkg-windows-latest/ubpkg.exe ubpkg.exe
d=$(date "+%Y-%m-%d_%H%M")
gh release create --generate-notes -t "Release $d" release_$d ubpkg-linux-x86_64 ubpkg-linux-aarch64 ubpkg-macos ubpkg.exe
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: github.ref == 'refs/heads/main' && github.event_name == 'push'