-
Notifications
You must be signed in to change notification settings - Fork 3
253 lines (195 loc) · 7.27 KB
/
ci.yml
File metadata and controls
253 lines (195 loc) · 7.27 KB
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
name: CI
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
jobs:
rust:
name: Rust (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
toolchain: nightly, 1.94
components: rustfmt, clippy
rustflags: ""
- name: Install just
run: cargo install --locked just
- name: Format check
run: just fmt-check-rust
- name: Lint
run: just lint-rust
- name: Tests
run: just test-rust
wasm-sandbox:
name: WASM Sandbox (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
components: clippy
rustflags: ""
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
- name: Install Python
run: uv python install 3.12
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "latest"
cache: npm
cache-dependency-path: src/wasm_sandbox/guests/javascript/package-lock.json
- name: Install just
run: cargo install --locked just
- name: Install clang (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y clang
- name: Install LLVM (Windows)
if: runner.os == 'Windows'
run: choco install llvm -y
- name: Enable KVM
if: runner.os == 'Linux' && !env.ACT
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
sudo chmod 666 /dev/kvm
- name: Build
run: just wasm build
- name: Lint
run: just wasm lint
- name: Integration tests
run: just wasm test
- name: Run examples
run: just wasm examples
# Python SDK checks go here so we don't rebuild everything from scratch on another job
# Build JS sandbox first — the Python hyperlight-js backend shares the root
# workspace target/ and needs hyperlight-js-runtime to be compiled.
- name: Build JS sandbox
run: just js build
- name: Python SDK Format check
run: just python fmt-check
- name: Python SDK Lint
run: just python lint
- name: Python SDK Build
run: just python build
- name: Python SDK examples
run: just python examples
- name: Python SDK Tests
run: just python python-test
- name: Python SDK Fuzz
run: just fuzz 30
# this is too flaky in github actions to run on PRs
# copilot fails to repsond in a timely fashion
# - name: Run Python SDK integration examples
# env:
# COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_TOKEN }}
# run: just integration-examples
# run last becuase it runs in build mode and messes with maturin
- name: Python SDK Benchmark
run: just benchmark
python-wheelhouse:
name: Python SDK wheelhouse test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
cache-key: release
rustflags: ""
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
- name: Install Python
run: uv python install 3.12
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: "latest"
cache: npm
cache-dependency-path: src/wasm_sandbox/guests/javascript/package-lock.json
- name: Install just
run: cargo install --locked just
- name: Install clang (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y clang
- name: Install LLVM (Windows)
if: runner.os == 'Windows'
run: choco install llvm -y
- name: Enable KVM
if: runner.os == 'Linux' && !env.ACT
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
sudo chmod 666 /dev/kvm
- name: Build release wheels and run wheelhouse test
run: just python-wheelhouse-test
javascript-sandbox:
name: JS Sandbox (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
components: clippy
rustflags: ""
- name: Install just
run: cargo install --locked just
- name: Install clang (Linux)
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y clang
- name: Install LLVM (Windows)
if: runner.os == 'Windows'
run: choco install llvm -y
- name: Enable KVM
if: runner.os == 'Linux' && !env.ACT
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
sudo chmod 666 /dev/kvm
- name: Compile WIT world
run: just wasm guest-compile-wit
- name: Build
run: just js build
- name: Lint
run: just js lint
- name: Tests
run: just js test
- name: Run examples
run: just js examples
nanvix-sandbox:
name: Nanvix Sandbox · build
runs-on: ubuntu-latest #current linux only
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions-rust-lang/setup-rust-toolchain@150fca883cd4034361b621bd4e6a9d34e5143606 # v1.15.4
with:
toolchain: nightly
rustflags: ""
- name: Install just
run: cargo install --locked just
- name: Build
run: just nanvix build
# NOTE: nanvix examples are skipped until hyperlight-nanvix updates to
# the new nanvix registry API (qjs/python3 are now separate packages).
# See: https://github.com/hyperlight-dev/hyperlight-nanvix
# - name: Run examples
# run: just nanvix examples