-
Notifications
You must be signed in to change notification settings - Fork 42
258 lines (229 loc) · 6.39 KB
/
gh-pages.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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
name: CI
on:
push:
branches:
- master
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
env:
URL_ROOT_PATH: /safer_ffi/
jobs:
# Check no_std #
check-nostd:
name: 'Check `#![no_std]`'
runs-on: ubuntu-latest
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly-2023-09-14
override: true
components: rust-src
- name: Clone repo
uses: actions/checkout@v2
- uses: actions-rs/cargo@v1
name: '`cargo +nightly check` without `std` nor `alloc`'
with:
command: check
args: |
--no-default-features
--target x86_64-unknown-linux-gnu -Zbuild-std=core
- uses: actions-rs/cargo@v1
name: '`cargo +nightly check` without `std` '
with:
command: check
args: |
--no-default-features --features alloc
--target x86_64-unknown-linux-gnu -Zbuild-std=core,alloc
# == CHECK == #
check:
name: Check nightly stable and MSRV
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
# - windows-latest
rust:
- 1.72.1
- stable
# - nightly
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
# - name: Instal LLVM
# run: choco install -y llvm
# if: runner.os == 'Windows'
- name: Clone repo
uses: actions/checkout@v2
- uses: actions-rs/cargo@v1
with:
command: check
args: --features log
releasable-to-crates-io:
name: Check the package can be released to crates.io
runs-on: ubuntu-latest
needs: check
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.72.1
override: true
- name: Clone repo
uses: actions/checkout@v2
- uses: actions-rs/cargo@v1
with:
command: package
args: --allow-dirty --no-verify
check-features:
name: Check all the features combinations on MSRV
runs-on: ubuntu-latest
needs: check
strategy:
fail-fast: false
matrix:
feature--std: ['', '--features alloc', '--features std']
feature--async-fn: ['', '--features async-fn']
feature--headers: ['', '--features headers']
feature--dyn-traits: ['', '--features dyn-traits', '--features futures', '--features tokio']
# feature--log: ['', '--features log']
feature--js: ['', '--features js']
feature--stabby: ['', '--features stabby']
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: 1.72.1
override: true
- name: Clone repo
uses: actions/checkout@v2
- uses: actions-rs/cargo@v1
with:
command: check
args: |
--no-default-features
${{ matrix.feature--std }}
${{ matrix.feature--async-fn }}
${{ matrix.feature--headers }}
${{ matrix.feature--dyn-traits }}
${{ matrix.feature--js }}
${{ matrix.feature--stabby }}
# == BUILD & TEST == #
build-and-test:
name: Build and test
runs-on: ${{ matrix.os }}
needs: [check]
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
rust:
- 1.72.1
- stable
# - nightly
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: default
override: true
toolchain: ${{ matrix.rust }}
target: wasm32-unknown-unknown
- name: Clone repo
uses: actions/checkout@v2
- name: Cargo test
uses: actions-rs/cargo@v1
env:
RUSTC_BOOTSTRAP: 1
RUSTFLAGS: -Zmacro-backtrace
RUST_BACKTRACE: full
with:
command: test
args: --features docs
- name: FFI test (C & C#?)
run: make -C ffi_tests
if: runner.os != 'Windows'
env:
RUSTC_BOOTSTRAP: 1
RUSTFLAGS: -Zmacro-backtrace
RUST_BACKTRACE: full
- name: FFI test (js)
run: make -C js_tests
if: runner.os != 'Windows'
env:
RUSTC_BOOTSTRAP: 1
RUSTFLAGS: -Zmacro-backtrace
RUST_BACKTRACE: full
all-good:
name: All the required checks
needs:
- check-nostd
- check
- check-features
- build-and-test
- releasable-to-crates-io
runs-on: ubuntu-latest
if: ${{ always() }}
steps:
- name: Job Checks
run: |
RESULT=$(echo "${{ join(needs.*.result, '') }}" | sed -e "s/success//g")
if [ -n "$RESULT" ]; then
echo "One or more jobs failed"
exit 1
fi
echo "All jobs succeeded"
# Deploy to Github pages #
deploy:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-20.04
needs:
- build-and-test
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: default
override: true
toolchain: 1.72.1
- name: Install `mdbook`
uses: peaceiris/actions-mdbook@v1
with:
mdbook-version: '0.4.4'
- name: Clone repo
uses: actions/checkout@v2
- name: Build docs
uses: actions-rs/cargo@v1
with:
command: doc
args: --features docs
env:
RUSTC_BOOTSTRAP: 1
- name: Build guide and documentation
run: |
(cd guide
(cd src && sed -e "s,{ROOT_PATH},${URL_ROOT_PATH}," links.md.template > links.md)
mdbook build
mkdir -p book/{assets,rustdoc}
cp -r assets/* book/assets/
cp -r ../target/doc/* book/rustdoc/
)
- name: Deploy to Github Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./guide/book