Skip to content

Commit 01b436a

Browse files
avrabeclaude
andauthored
ci: migrate 12 of 24 workflow jobs to smithy self-hosted runners (#97)
rust-cpu rivet-validate, validate, benchmark, self-optimization (ci.yml); fuzz (fuzz.yml); test-shared, test-workspace, integration-test, check-api-stability (validate-shared.yml) light format (ci.yml); coverage (fuzz.yml); verify-architecture (validate-shared.yml) lean-mem (none) Stays on ubuntu-latest: - clippy sudo apt-get install z3 (not on smithy) - test matrix spans macOS + Windows - build matrix spans macOS + Windows - coverage sudo rm -rf to free disk space - verify sudo apt-get install z3 (not on smithy) - wasm-build sudo mkdir/tar to install wasi-sdk into /opt - rocq-proofs Nix + Bazel (out of scope per playbook) - differential sudo apt-get install binaryen (not on smithy) - build-native matrix spans macOS + Windows (release.yml) - build-wasm sudo for wasi-sdk install (release.yml) - release sudo mv for oras + Cosign OIDC keyless (release.yml) - format-and-lint sudo apt-get install z3 (validate-shared.yml) No new workarounds beyond those already documented in smithy/docs/migration-playbook.md. All migrated jobs are clean runs-on: changes only. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 1e96c68 commit 01b436a

4 files changed

Lines changed: 33 additions & 12 deletions

File tree

.github/workflows/ci.yml

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ env:
1717
jobs:
1818
rivet-validate:
1919
name: Rivet Artifact Traceability
20-
runs-on: ubuntu-latest
20+
runs-on: [self-hosted, linux, x64, rust-cpu]
2121
steps:
2222
- uses: actions/checkout@v4
2323
- uses: dtolnay/rust-toolchain@stable
@@ -35,7 +35,7 @@ jobs:
3535

3636
format:
3737
name: Format
38-
runs-on: ubuntu-latest
38+
runs-on: [self-hosted, linux, x64, light]
3939
steps:
4040
- uses: actions/checkout@v4
4141
- uses: dtolnay/rust-toolchain@stable
@@ -46,6 +46,8 @@ jobs:
4646

4747
clippy:
4848
name: Clippy
49+
# Stays on ubuntu-latest: requires `sudo apt-get install z3`; Z3 is not
50+
# provisioned on smithy hosts. Migrate once smithy ships z3 in toolchains.
4951
runs-on: ubuntu-latest
5052
steps:
5153
- uses: actions/checkout@v4
@@ -62,6 +64,7 @@ jobs:
6264

6365
test:
6466
name: Test
67+
# Stays on ubuntu-latest: matrix spans macOS + Windows; smithy is Linux-only.
6568
runs-on: ${{ matrix.os }}
6669
strategy:
6770
matrix:
@@ -76,6 +79,7 @@ jobs:
7679

7780
build:
7881
name: Build
82+
# Stays on ubuntu-latest: matrix spans macOS + Windows; smithy is Linux-only.
7983
runs-on: ${{ matrix.os }}
8084
strategy:
8185
matrix:
@@ -96,7 +100,7 @@ jobs:
96100
97101
validate:
98102
name: Validate WebAssembly Output
99-
runs-on: ubuntu-latest
103+
runs-on: [self-hosted, linux, x64, rust-cpu]
100104
needs: build
101105
steps:
102106
- uses: actions/checkout@v4
@@ -165,6 +169,9 @@ jobs:
165169
166170
coverage:
167171
name: Code Coverage
172+
# Stays on ubuntu-latest: uses `sudo rm -rf` to free disk space on the
173+
# GitHub-hosted image. Could migrate by dropping the free-disk step
174+
# (smithy has plenty of disk via lv_runners) but leaving as-is for now.
168175
runs-on: ubuntu-latest
169176
steps:
170177
- name: Free disk space
@@ -192,7 +199,7 @@ jobs:
192199

193200
benchmark:
194201
name: Benchmarks
195-
runs-on: ubuntu-latest
202+
runs-on: [self-hosted, linux, x64, rust-cpu]
196203
steps:
197204
- uses: actions/checkout@v4
198205
- uses: dtolnay/rust-toolchain@stable
@@ -206,6 +213,8 @@ jobs:
206213

207214
verify:
208215
name: Z3 Verification Build
216+
# Stays on ubuntu-latest: requires `sudo apt-get install z3`; Z3 is not
217+
# provisioned on smithy hosts. Migrate once smithy ships z3.
209218
runs-on: ubuntu-latest
210219
steps:
211220
- uses: actions/checkout@v4
@@ -264,6 +273,8 @@ jobs:
264273
265274
wasm-build:
266275
name: WASM Build (wasm32-wasip2 with Z3)
276+
# Stays on ubuntu-latest: installs wasi-sdk into /opt with sudo mkdir/tar.
277+
# Could migrate by extracting into $HOME, but skipping until needed.
267278
runs-on: ubuntu-latest
268279
steps:
269280
- uses: actions/checkout@v4
@@ -302,7 +313,7 @@ jobs:
302313

303314
self-optimization:
304315
name: Self-Optimization Test
305-
runs-on: ubuntu-latest
316+
runs-on: [self-hosted, linux, x64, rust-cpu]
306317
needs: [build, wasm-build]
307318
steps:
308319
- uses: actions/checkout@v4
@@ -349,6 +360,8 @@ jobs:
349360
350361
rocq-proofs:
351362
name: Rocq Formal Proofs
363+
# Stays on ubuntu-latest: requires Nix + Bazel; both are out-of-scope for
364+
# smithy phase 1 (see migration playbook "What's currently out of scope").
352365
runs-on: ubuntu-latest
353366
continue-on-error: true
354367
steps:
@@ -370,6 +383,8 @@ jobs:
370383

371384
differential:
372385
name: Differential Testing (vs wasm-opt)
386+
# Stays on ubuntu-latest: requires `sudo apt-get install binaryen`;
387+
# binaryen/wasm-opt is not provisioned on smithy hosts.
373388
runs-on: ubuntu-latest
374389
needs: [build]
375390
steps:

.github/workflows/fuzz.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ env:
3535
jobs:
3636
fuzz:
3737
name: Fuzz ${{ matrix.target }}
38-
runs-on: ubuntu-latest
38+
runs-on: [self-hosted, linux, x64, rust-cpu]
3939
strategy:
4040
fail-fast: false
4141
matrix:
@@ -105,7 +105,7 @@ jobs:
105105

106106
coverage:
107107
name: Fuzzing coverage report
108-
runs-on: ubuntu-latest
108+
runs-on: [self-hosted, linux, x64, light]
109109
needs: fuzz
110110
if: always()
111111

.github/workflows/release.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ env:
2121
jobs:
2222
build-native:
2323
name: Build Native (${{ matrix.os }})
24+
# Stays on ubuntu-latest: matrix spans macOS + Windows; smithy is Linux-only.
2425
runs-on: ${{ matrix.os }}
2526
strategy:
2627
matrix:
@@ -75,6 +76,7 @@ jobs:
7576
7677
build-wasm:
7778
name: Build WASM (wasm32-wasip2)
79+
# Stays on ubuntu-latest: installs wasi-sdk into /opt with sudo mkdir/tar.
7880
runs-on: ubuntu-latest
7981
steps:
8082
- uses: actions/checkout@v5
@@ -110,6 +112,8 @@ jobs:
110112
release:
111113
name: Create Release
112114
needs: [build-native, build-wasm]
115+
# Stays on ubuntu-latest: uses `sudo mv` for oras install plus Cosign
116+
# OIDC keyless signing tied to GitHub-hosted runner identity.
113117
runs-on: ubuntu-latest
114118
permissions:
115119
contents: write

.github/workflows/validate-shared.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
jobs:
1414
test-shared:
1515
name: Test loom-shared
16-
runs-on: ubuntu-latest
16+
runs-on: [self-hosted, linux, x64, rust-cpu]
1717

1818
steps:
1919
- name: Checkout code
@@ -56,7 +56,7 @@ jobs:
5656
5757
test-workspace:
5858
name: Test Full Workspace
59-
runs-on: ubuntu-latest
59+
runs-on: [self-hosted, linux, x64, rust-cpu]
6060
needs: test-shared
6161

6262
steps:
@@ -100,7 +100,7 @@ jobs:
100100
101101
integration-test:
102102
name: Integration Testing
103-
runs-on: ubuntu-latest
103+
runs-on: [self-hosted, linux, x64, rust-cpu]
104104
needs: test-workspace
105105

106106
steps:
@@ -149,7 +149,7 @@ jobs:
149149
150150
check-api-stability:
151151
name: Check API Stability
152-
runs-on: ubuntu-latest
152+
runs-on: [self-hosted, linux, x64, rust-cpu]
153153

154154
steps:
155155
- name: Checkout code
@@ -172,6 +172,8 @@ jobs:
172172
173173
format-and-lint:
174174
name: Format and Lint
175+
# Stays on ubuntu-latest: clippy step requires `sudo apt-get install z3`;
176+
# Z3 is not provisioned on smithy hosts.
175177
runs-on: ubuntu-latest
176178

177179
steps:
@@ -196,7 +198,7 @@ jobs:
196198

197199
verify-architecture:
198200
name: Verify Architecture
199-
runs-on: ubuntu-latest
201+
runs-on: [self-hosted, linux, x64, light]
200202

201203
steps:
202204
- name: Checkout code

0 commit comments

Comments
 (0)