-
Notifications
You must be signed in to change notification settings - Fork 23
228 lines (217 loc) · 8.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
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
name: CI
on:
merge_group:
pull_request:
branches: [main, "release-*"]
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
# this is needed to gain access via OIDC to the S3 bucket for caching
permissions:
id-token: write
contents: read
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RISC0_TOOLCHAIN_VERSION: r0.1.81.0
RISC0_MONOREPO_REF: "main"
jobs:
# see: https://github.com/orgs/community/discussions/26822
main-status-check:
if: always()
needs:
- check
- doc
- docs-rs
- test-risc0-ethereum
runs-on: ubuntu-latest
steps:
- name: Check all job status
# see https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#needs-context
# see https://stackoverflow.com/a/67532120/4907315
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
run: exit 1
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Full history is required by license-check.py
fetch-depth: 0
- uses: risc0/risc0/.github/actions/rustup@main
- name: Install cargo-sort
uses: risc0/cargo-install@b9307573043522ab0d3e3be64a51763b765b52a4
with:
crate: cargo-sort
version: "1.0"
- name: cargo check risc0-ethereum
run: |
cargo fmt --all --check
cargo sort --workspace --check
- name: cargo check examples
run: ../.github/scripts/cargo-check.sh
working-directory: examples
- uses: risc0/foundry-toolchain@2fe7e70b520f62368a0e3c464f997df07ede420f
- name: forge check risc0-ethereum
run: forge fmt --check
working-directory: contracts
- name: forge check examples
run: ../.github/scripts/forge-check.sh
working-directory: examples
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- run: python license-check.py
- name: check for "D0 NOT MERGE" comments
run: |
[ "$(grep -re 'DO[_ ]\?NOT[_ ]\?MERGE' $(git ls-tree --full-tree --name-only -r HEAD) | tee /dev/fd/2 | wc -l)" -eq "0" ]
clippy:
runs-on: [self-hosted, prod, "${{ matrix.os }}", "${{ matrix.device }}"]
strategy:
# Run only on Linux with CPU.
matrix:
include:
- os: Linux
feature: default
device: cpu
steps:
# This is a workaround from: https://github.com/actions/checkout/issues/590#issuecomment-970586842
- run: "git checkout -f $(git -c user.name=x -c user.email=x@x commit-tree $(git hash-object -t tree /dev/null) < /dev/null) || :"
- uses: actions/checkout@v4
- if: matrix.feature == 'cuda'
uses: risc0/risc0/.github/actions/cuda@main
- uses: risc0/risc0/.github/actions/rustup@main
- uses: risc0/risc0/.github/actions/sccache@main
with:
key: ${{ matrix.os }}-${{ matrix.feature }}
- uses: ./.github/actions/cargo-risczero-install
with:
ref: ${{ env.RISC0_MONOREPO_REF }}
toolchain-version: ${{ env.RISC0_TOOLCHAIN_VERSION }}
features: ${{ matrix.feature }}
- name: cargo clippy risc0-ethereum
run: cargo clippy --workspace --all-targets --all-features
env:
RUSTFLAGS: -Dwarnings
RISC0_SKIP_BUILD: true
- name: cargo clippy all examples
run: ../.github/scripts/cargo-clippy.sh
working-directory: examples
env:
RUSTFLAGS: -Dwarnings
RISC0_SKIP_BUILD: true
- run: sccache --show-stats
test-risc0-ethereum:
runs-on: [self-hosted, prod, "${{ matrix.os }}", "${{ matrix.device }}"]
strategy:
fail-fast: false
matrix:
include:
- os: Linux
feature: default
device: cpu
- os: Linux
feature: cuda
device: nvidia_rtx_a5000
- os: macOS
feature: default
device: apple_m2_pro
env:
FEATURE: ${{ matrix.feature }}
RUST_BACKTRACE: full
steps:
# This is a workaround from: https://github.com/actions/checkout/issues/590#issuecomment-970586842
- run: "git checkout -f $(git -c user.name=x -c user.email=x@x commit-tree $(git hash-object -t tree /dev/null) < /dev/null) || :"
- uses: actions/checkout@v4
with:
submodules: recursive
- if: matrix.feature == 'cuda'
uses: risc0/risc0/.github/actions/cuda@main
- uses: risc0/risc0/.github/actions/rustup@main
- uses: risc0/risc0/.github/actions/sccache@main
with:
key: ${{ matrix.os }}-${{ matrix.feature }}
- uses: ./.github/actions/cargo-risczero-install
with:
ref: ${{ env.RISC0_MONOREPO_REF }}
toolchain-version: ${{ env.RISC0_TOOLCHAIN_VERSION }}
features: ${{ matrix.feature }}
- uses: risc0/foundry-toolchain@2fe7e70b520f62368a0e3c464f997df07ede420f
- name: cargo build
run: cargo build --workspace --all-features
- name: cargo test
run: cargo test --workspace --all-features --timings
- name: Upload timings artifacts
uses: actions/upload-artifact@v3
with:
name: cargo-timings-${{ matrix.os }}-${{ matrix.device }}
path: target/cargo-timings/
retention-days: 5
- run: forge test -vvv
working-directory: contracts
- run: sccache --show-stats
examples:
runs-on: [self-hosted, prod, "${{ matrix.os }}", "${{ matrix.device }}"]
strategy:
# Run only on Linux with CPU. Additional coverage is marginal.
matrix:
include:
- os: Linux
feature: default
device: cpu
env:
RUST_BACKTRACE: full
steps:
# This is a workaround from: https://github.com/actions/checkout/issues/590#issuecomment-970586842
- run: "git checkout -f $(git -c user.name=x -c user.email=x@x commit-tree $(git hash-object -t tree /dev/null) < /dev/null) || :"
- uses: actions/checkout@v4
with:
submodules: recursive
- if: matrix.feature == 'cuda'
uses: risc0/risc0/.github/actions/cuda@main
- uses: risc0/risc0/.github/actions/rustup@main
- uses: risc0/risc0/.github/actions/sccache@main
with:
key: ${{ matrix.os }}-${{ matrix.feature }}
- uses: ./.github/actions/cargo-risczero-install
with:
ref: ${{ env.RISC0_MONOREPO_REF }}
toolchain-version: ${{ env.RISC0_TOOLCHAIN_VERSION }}
features: ${{ matrix.feature }}
- uses: risc0/foundry-toolchain@2fe7e70b520f62368a0e3c464f997df07ede420f
- name: cargo test all examples
run: ../.github/scripts/cargo-test.sh
working-directory: examples
- name: forge test all examples
run: ../.github/scripts/forge-test.sh
working-directory: examples
- run: sccache --show-stats
doc:
runs-on: [self-hosted, prod, macOS, cpu]
steps:
# This is a workaround from: https://github.com/actions/checkout/issues/590#issuecomment-970586842
- run: "git checkout -f $(git -c user.name=x -c user.email=x@x commit-tree $(git hash-object -t tree /dev/null) < /dev/null) || :"
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: risc0/risc0/.github/actions/rustup@main
- uses: risc0/foundry-toolchain@2fe7e70b520f62368a0e3c464f997df07ede420f
- run: cargo doc --all-features --no-deps --workspace
- run: forge doc
# Run as a separate job because we need to install a different set of tools.
# In particular, it uses nightly Rust and _does not_ install Forge or cargo risczero.
docs-rs:
runs-on: [self-hosted, prod, macOS, cpu]
steps:
# This is a workaround from: https://github.com/actions/checkout/issues/590#issuecomment-970586842
- run: "git checkout -f $(git -c user.name=x -c user.email=x@x commit-tree $(git hash-object -t tree /dev/null) < /dev/null) || :"
- uses: actions/checkout@v4
- uses: risc0/risc0/.github/actions/rustup@main
with:
# Building with docs.rs config requires the nightly toolchain.
toolchain: nightly-2024-09-04
- run: cargo +nightly-2024-09-04 doc -p risc0-steel --all-features --no-deps
env:
RUSTDOCFLAGS: "--cfg docsrs -D warnings"
- run: cargo +nightly-2024-09-04 doc -p risc0-build-ethereum --all-features --no-deps
env:
RUSTDOCFLAGS: "--cfg docsrs -D warnings"