-
Notifications
You must be signed in to change notification settings - Fork 74
190 lines (178 loc) · 6.37 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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
name: CI
on:
push:
branches:
- main
pull_request:
merge_group:
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: ${{ github.head_ref != 'main' }}
env:
# TODO(#1915): Use stable toolchain once stwo is stable.
RUST_NIGHTLY_TOOLCHAIN: "nightly-2025-01-02"
jobs:
build-test:
name: build test ${{ matrix.platform.name }}
runs-on: ${{ matrix.platform.os }}
strategy:
fail-fast: false
matrix:
platform:
- name: linux x86-64
os: ubuntu-latest
- name: windows x86-64
os: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@nextest
- name: nextest archive
run: cargo nextest archive --workspace --all-features --cargo-profile ci --archive-file 'nextest-archive-${{ matrix.platform.os }}.tar.zst' --exclude scarb-prove --exclude scarb-verify
- uses: actions/upload-artifact@v4
with:
name: nextest-archive-${{ matrix.platform.os }}
path: nextest-archive-${{ matrix.platform.os }}.tar.zst
test:
name: test ${{ matrix.platform.name }} ${{ matrix.partition }}/4
runs-on: ${{ matrix.platform.os }}
needs:
- build-test
strategy:
fail-fast: false
matrix:
platform:
- name: linux x86-64
os: ubuntu-latest
- name: windows x86-64
os: windows-latest
partition: [ 1, 2, 3, 4 ]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@nextest
- uses: actions/download-artifact@v4
with:
name: nextest-archive-${{ matrix.platform.os }}
- name: nextest partition ${{ matrix.partition }}/4
run: cargo nextest run --partition 'count:${{ matrix.partition }}/4' --archive-file 'nextest-archive-${{ matrix.platform.os }}.tar.zst'
test-doc:
name: doc tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: run tests
run: cargo test --doc
scarb-metadata-compatibility:
name: scarb-metadata compatibility check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: software-mansion/setup-scarb@v1
with:
cache: false
scarb-version: "2.3.0"
- run: echo "SCARB_TEST_BIN=$(which scarb)" >> $GITHUB_ENV
- name: run tests
run: cargo test -p scarb-metadata
test-nightly-crates:
name: test nightly crates ${{ matrix.platform.name }}
runs-on: ${{ matrix.platform.os }}
needs:
- build-test
strategy:
fail-fast: false
matrix:
platform:
- name: linux x86-64
os: ubuntu-latest
# Do not run tests on windows, until stwo supports it.
# - name: windows x86-64
# os: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_NIGHTLY_TOOLCHAIN }}
- uses: Swatinem/rust-cache@v2
- uses: actions/download-artifact@v4
with:
name: nextest-archive-${{ matrix.platform.os }}
- name: Unpack build stable rust artifacts on ubuntu
if: matrix.platform.os == 'ubuntu-latest'
run: tar --use-compress-program=unzstd -xvf nextest-archive-ubuntu-latest.tar.zst
- name: Unpack build stable rust artifacts on windows
if: matrix.platform.os == 'windows-latest'
run: |
zstd -d nextest-archive-windows-latest.tar.zst
tar -xf nextest-archive-windows-latest.tar
- name: Run scarb-prove and scarb-verify tests
run: cargo +${{ env.RUST_NIGHTLY_TOOLCHAIN }} test -p scarb-prove -p scarb-verify --profile=ci
check-rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo fmt --check
# TODO(#1915): Build all crates with stable toolchain once stwo is stable.
- run: cargo clippy --all-targets --all-features --workspace --exclude scarb-prove --exclude scarb-verify -- --no-deps
env:
# Make sure CI fails on all warnings, including Clippy lints.
RUSTFLAGS: "-Dwarnings"
- run: cargo doc --all-features --no-deps --workspace --exclude scarb-prove --exclude scarb-verify
env:
# Make sure CI fails on all warnings, including Clippy lints.
RUSTDOCFLAGS: "-Dwarnings"
check-rust-nightly:
name: check-rust (nightly)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.RUST_NIGHTLY_TOOLCHAIN }}
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- run: cargo +${{ env.RUST_NIGHTLY_TOOLCHAIN }} clippy --all-targets --all-features -p scarb-prove -p scarb-verify -- --no-deps
env:
# Make sure CI fails on all warnings, including Clippy lints.
RUSTFLAGS: "-Dwarnings"
- run: cargo +${{ env.RUST_NIGHTLY_TOOLCHAIN }} doc --all-features --no-deps -p scarb-prove -p scarb-verify
env:
# Make sure CI fails on all warnings, including Clippy lints.
RUSTDOCFLAGS: "-Dwarnings"
check-website:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./website
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '18.x'
cache: npm
cache-dependency-path: website/package-lock.json
- run: npm ci
- run: npm run fmt:check
snforge-init:
runs-on: ubuntu-latest
needs:
- build-test
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@nextest
- uses: actions/download-artifact@v4
with:
name: nextest-archive-ubuntu-latest
- uses: foundry-rs/setup-snfoundry@v4
- run: cargo nextest run --archive-file 'nextest-archive-ubuntu-latest.tar.zst' --run-ignored=all --filterset 'test(new_simple)'