-
Notifications
You must be signed in to change notification settings - Fork 65
204 lines (171 loc) · 5.47 KB
/
main.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
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build_default:
name: build with default features
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- uses: actions-rs/[email protected]
with:
toolchain: beta
override: true
- uses: actions-rs/[email protected]
with:
command: build
build_msrv:
name: build with MSRV (1.66.1)
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
# Re-resolve Cargo.lock with minimal versions.
# This only works with nightly. We pin to a specific version because
# newer versions use lock file version 4, but the MSRV cargo does not
# support that.
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2024-09-20
- run: cargo update -Z minimal-versions
# Now check that `cargo build` works with respect to the oldest possible
# deps and the stated MSRV
- uses: dtolnay/[email protected]
- run: cargo build --all-features
# TODO: this is filling up the disk space in CI. See if there is a way to
# workaround it.
# build_all_features:
# name: build all features combinations
# runs-on: ubuntu-latest
# steps:
# - uses: actions/[email protected]
# - uses: dtolnay/rust-toolchain@stable
# - run: cargo install cargo-all-features
# # We check and then test because some test dependencies could help
# # a bugged build work, while a regular build would fail.
# # Note that this also builds each crate separately, which also helps
# # catching some issues.
# - run: cargo check-all-features
# # Build all tests. We don't run them to save time, since it's unlikely
# # that tests would fail due to feature combinations.
# - run: cargo test-all-features --no-run
build_no_std:
name: build with no_std
runs-on: ubuntu-latest
# Skip ed448 which does not support it.
strategy:
matrix:
crate: [ristretto255, ed25519, p256, secp256k1, rerandomized]
steps:
- uses: actions/[email protected]
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: thumbv6m-none-eabi
- run: cargo build -p frost-${{ matrix.crate }} --no-default-features --target thumbv6m-none-eabi
- run: cargo build -p frost-${{ matrix.crate }} --no-default-features --features serialization --target thumbv6m-none-eabi
test_beta:
name: test on beta
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- uses: actions-rs/[email protected]
with:
toolchain: beta
override: true
- uses: actions-rs/[email protected]
with:
command: test
args: --release --all-features
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
persist-credentials: false
- uses: actions-rs/[email protected]
with:
toolchain: stable
override: true
- name: Check workflow permissions
id: check_permissions
uses: scherermichael-oss/[email protected]
with:
required-permission: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Run clippy action to produce annotations
uses: actions-rs/[email protected]
if: ${{ steps.check_permissions.outputs.has-permission }}
with:
# GitHub displays the clippy job and its results as separate entries
name: Clippy (stable) Results
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets -- -D warnings
- name: Run clippy manually without annotations
if: ${{ !steps.check_permissions.outputs.has-permission }}
run: cargo clippy --all-features --all-targets -- -D warnings
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
persist-credentials: false
- uses: actions-rs/[email protected]
with:
toolchain: stable
components: rustfmt
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/[email protected]
with:
command: fmt
args: --all -- --check
gencode:
name: Check if automatically generated code is up to date
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
persist-credentials: false
- uses: actions-rs/[email protected]
with:
toolchain: stable
components: rustfmt
override: true
- uses: Swatinem/rust-cache@v2
- uses: actions-rs/[email protected]
with:
command: run
args: --bin gencode -- --check
docs:
name: Check Rust doc
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
with:
persist-credentials: false
- uses: actions-rs/[email protected]
with:
toolchain: stable
profile: minimal
override: true
- uses: actions-rs/[email protected]
with:
command: doc
args: --no-deps --document-private-items --all-features
actionlint:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/[email protected]
- uses: reviewdog/[email protected]
with:
level: warning
fail_on_error: false