-
Notifications
You must be signed in to change notification settings - Fork 3
193 lines (146 loc) · 5.4 KB
/
ci.yml
File metadata and controls
193 lines (146 loc) · 5.4 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
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 · fmt / lint / test
runs-on: ubuntu-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 · lint / build / examples
runs-on: ubuntu-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
run: sudo apt-get update && sudo apt-get install -y clang
- name: Enable KVM
if: ${{ !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 jssandbox 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
# Build release wheels and verify they install + work correctly
- name: Python SDK Wheelhouse test
run: |
just python-dist
just python python-wheelhouse-test
javascript-sandbox:
name: JS Sandbox · lint / build / examples
runs-on: ubuntu-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
run: sudo apt-get update && sudo apt-get install -y clang
- name: Enable KVM
if: ${{ !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 jssandbox build
- name: Lint
run: just jssandbox lint
- name: Tests
run: just jssandbox test
- name: Run examples
run: just jssandbox examples
nanvix-sandbox:
name: Nanvix Sandbox · build
runs-on: ubuntu-latest
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