-
Notifications
You must be signed in to change notification settings - Fork 81
263 lines (218 loc) · 7.34 KB
/
test.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
259
260
261
262
263
name: Test
on:
push:
branches:
- main
- release-*
tags:
# YYYYMMDD
- "20[0-9][0-9][0-1][0-9][0-3][0-9]*"
schedule:
- cron: "0 0 * * 1"
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_LOG: info,libp2p=off,node=error
CARGO_TERM_COLOR: always
# Save the process compose logs
PC_LOGS: /tmp/pc.log
jobs:
build-test-artifacts-postgres:
name: Build test artifacts (postgres)
runs-on: buildjet-8vcpu-ubuntu-2204
steps:
- uses: rui314/setup-mold@v1
- uses: actions/checkout@v4
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Enable Rust Caching
uses: Swatinem/rust-cache@v2
with:
cache-all-crates: true
cache-provider: buildjet
- name: Build and archive tests
run: cargo nextest archive --locked --workspace --archive-file nextest-archive-postgres.tar.zst
- name: Upload archive to workflow
uses: actions/upload-artifact@v4
with:
name: nextest-archive-postgres
path: nextest-archive-postgres.tar.zst
build-test-artifacts-sqlite:
name: Build test artifacts (sqlite)
runs-on: buildjet-8vcpu-ubuntu-2204
steps:
- uses: rui314/setup-mold@v1
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Enable Rust Caching
uses: Swatinem/rust-cache@v2
with:
cache-all-crates: true
cache-provider: buildjet
- name: Build and archive tests
run: cargo nextest archive --locked --features "embedded-db testing" --workspace --archive-file nextest-archive-sqlite.tar.zst
- name: Upload archive to workflow
uses: actions/upload-artifact@v4
with:
name: nextest-archive-sqlite
path: nextest-archive-sqlite.tar.zst
build-test-bins:
name: Build test binaries
runs-on: buildjet-8vcpu-ubuntu-2204
steps:
- uses: rui314/setup-mold@v1
- uses: actions/checkout@v4
- name: Enable Rust Caching
uses: Swatinem/rust-cache@v2
with:
cache-all-crates: true
cache-provider: buildjet
- name: Build Bins
run: |
cargo build --locked --profile test --bins
cargo build --manifest-path ./sequencer-sqlite/Cargo.toml --target-dir ./target
timeout-minutes: 30
- name: Upload archive to workflow
uses: actions/upload-artifact@v4
with:
name: test-binaries
path: |
target/debug/orchestrator
target/debug/cdn-broker
target/debug/cdn-marshal
target/debug/cdn-whitelist
target/debug/state-relay-server
target/debug/state-prover
target/debug/sequencer
target/debug/cli
target/debug/submit-transactions
target/debug/reset-storage
target/debug/utils
target/debug/deploy
target/debug/keygen
target/debug/permissionless-builder
target/debug/nasty-client
target/debug/espresso-dev-node
target/debug/pub-key
target/debug/espresso-bridge
target/debug/marketplace-solver
target/debug/marketplace-builder
target/debug/node-metrics
target/debug/dev-rollup
target/debug/sequencer-sqlite
test-postgres:
needs: build-test-artifacts-postgres
runs-on: ubuntu-latest
steps:
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- uses: actions/checkout@v4
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Download archive
uses: actions/download-artifact@v4
with:
name: nextest-archive-postgres
- name: Test
run: |
cargo nextest run --archive-file nextest-archive-postgres.tar.zst --verbose --no-fail-fast \
--workspace-remap $PWD
timeout-minutes: 20
test-sqlite:
needs: build-test-artifacts-sqlite
runs-on: ubuntu-latest
steps:
- name: Fix submodule permissions check
run: |
git config --global --add safe.directory '*'
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Download archive
uses: actions/download-artifact@v4
with:
name: nextest-archive-sqlite
- name: Test
run: |
cargo nextest run --archive-file nextest-archive-sqlite.tar.zst --verbose --no-fail-fast \
--workspace-remap $PWD
timeout-minutes: 20
test-integration:
needs: [build-test-bins, build-test-artifacts-postgres]
strategy:
matrix:
version: [02,99]
include:
- version: 02
compose: "-f process-compose.yaml -D"
- version: 99
compose: "-f process-compose.yaml -f process-compose-mp.yml -D"
runs-on: ubuntu-latest
steps:
- name: Install Nix
uses: cachix/install-nix-action@v30
- name: Configure PATH
run: PATH="$PWD/target/debug:$PATH"
- uses: actions/checkout@v4
- uses: taiki-e/install-action@nextest
- name: Download archive
uses: actions/download-artifact@v4
- name: Move files
run: |
mv nextest-archive-postgres/* .
mkdir -p target/debug
mv test-binaries/* target/debug
chmod -c +x target/debug/*
- name: Install process-compose
run: nix profile install nixpkgs#process-compose
- name: Run Demo-Native ${{matrix.version}}
run: bash -x scripts/demo-native ${{matrix.compose}} --tui=false > ${{ env.PC_LOGS }} 2>&1 &
- name: Test Integration
env:
RUST_LOG: debug
NEXTEST_PROFILE: integration
INTEGRATION_TEST_SEQUENCER_VERSION: ${{ matrix.version }}
run: |
cargo nextest run --archive-file nextest-archive-postgres.tar.zst --verbose --no-fail-fast --nocapture \
--workspace-remap $PWD $(if [ "${{ matrix.version }}" == "2" ]; then echo " smoke"; fi)
timeout-minutes: 10
- name: Upload process compose logs
if: always()
uses: actions/upload-artifact@v4
with:
name: process-compose-logs-integration-v${{ matrix.version }}
path: ${{ env.PC_LOGS }}
demo-native:
needs: build-test-bins
runs-on: ubuntu-latest
steps:
- name: Install Nix
uses: cachix/install-nix-action@v30
- uses: actions/checkout@v4
- name: Download archive
uses: actions/download-artifact@v4
with:
name: test-binaries
path: target/debug
- name: chmod +x
run: chmod -c +x target/debug/*
- name: Install process-compose
run: nix profile install nixpkgs#process-compose
- name: Test Demo
run: |
export PATH="$PWD/target/debug:$PATH"
set -o pipefail
scripts/demo-native --tui=false &
timeout -v 600 scripts/smoke-test-demo | sed -e 's/^/smoke-test: /;'