ci: migrate 16 of 21 ci.yml jobs to smithy self-hosted runners#262
Open
ci: migrate 16 of 21 ci.yml jobs to smithy self-hosted runners#262
Conversation
Builds on the spar pilot (pulseengine/spar#201) — same runner-class mapping, same workarounds for the rustsec parser CVSS 4.0 issue, same direct-cargo-deny pattern. Migrated to smithy: rust-cpu clippy, docs-check, test, semver-checks, coverage, proptest, fuzz, msrv lean-mem miri, mutants, verus light fmt, yaml-lint, deny, supply-chain, release-results Stay on ubuntu-latest (each with explanatory comment in-place): - playwright (--with-deps does sudo apt-get; smithy runners no sudo) - vscode-extension (xvfb-run + downloaded VS Code Test setup) - audit (cargo-audit 0.21 rustsec parser rejects CVSS 4.0) - kani (kani-verifier bundles CBMC, ~100 MB install) - rocq (Coq install, not on smithy yet) Two non-trivial fixes inside migrated jobs: - test: actionlint install moved from `sudo mv /tmp/actionlint /usr/local/bin` to `mv /tmp/actionlint $HOME/.local/bin` plus GITHUB_PATH update. Smithy runners have no sudo; same binary, different writable location. - deny: dropped the `cargo deny check` (which would fail loading advisory-db with CVSS 4.0) for `cargo deny check bans licenses sources`. The audit job (still on hosted) covers vulnerability matching meanwhile. Expected improvement: spar's broad migration showed ~470x end-to-end speedup on clippy (~470 min → 1 min) thanks to queue elimination. Rivet should see similar — its recent runs showed 600+ min total.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
First migration run timed out exactly at 15:00 with tests still
progressing (last printed test at ~11:00). Smithy's lean-mem class
appears to run the slow tail tests slower than the previous hosted
runner did — could be cgroup memory pressure (24G MemoryHigh under
Miri's shadow allocations) or just longer tail test perf. Bumping
the budget conservatively; revisit once we have a few green runs
to dial it back closer to actual.
Semver Checks is also failing on this PR — upstream issue
('unsupported rustdoc format v57', the action ships a too-old
cargo-semver-checks). NOT a smithy-migration issue; would fail on
hosted too. Tracked as a separate followup; doesn't block this PR.
Smithy main now points TMPDIR / TMP / TEMP at the per-runner /var/lib/runners/runnerN/_tmp on lv_runners (500 G), instead of the host's /tmp on lv_root (80 G). Previous run hit 'no space left on device' when the rivet HTML-export test ran out of root FS budget. Runners restarted; this commit triggers a fresh CI.
…tall obi1kenobi/cargo-semver-checks-action@v2 bundles an older cargo-semver-checks that doesn't recognise rustdoc JSON v57 (the format current stable rustdoc emits). Every PR run failed with 'unsupported rustdoc format v57 for file: rivet_core.json'. Going direct: install the latest cargo-semver-checks at job time and invoke it. Slightly slower on cold cache but tracks the upstream rustdoc format. Same end-effect as the wrapper. Caught during the rivet broad-CI smithy migration (PR #262); not related to self-hosted vs hosted.
This was referenced May 3, 2026
There was a problem hiding this comment.
⚠️ Performance Alert ⚠️
Possible performance regression was detected for benchmark 'Rivet Criterion Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.20.
| Benchmark suite | Current: 62ebeac | Previous: 9b45c86 | Ratio |
|---|---|---|---|
link_graph_build/10000 |
37548089 ns/iter (± 2433137) |
29210248 ns/iter (± 1823498) |
1.29 |
This comment was automatically generated by workflow using github-action-benchmark.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Second pulseengine repo onto the smithy self-hosted fleet, after the
spar pilot (pulseengine/spar#201). Same runner-class mapping, same
workarounds, same expected ~470x end-to-end win driven by queue
elimination on the org-free Actions tier.
Coverage
rust-cpulean-memlightWhy these stay on hosted (each commented in-place)
npx playwright install --with-depscallsapt-get installvia sudo; smithy runners can't sudo.xvfb-run+ the VS Code Test environmentexpects sudo apt-get for system libs.
parser rejects RUSTSEC-2026-0037 ("unsupported CVSS version: 4.0").
v0.22.1 fixes it but the install trips on smithy's sccache-on-cc
setup. Move back once smithy bumps cargo-audit.
on smithy. Migrate when smithy's toolchains role ships kani.
Two non-trivial fixes inside migrated jobs
test: actionlint install moved from
sudo mv /tmp/actionlint /usr/local/bintomv /tmp/actionlint \$HOME/.local/binplus aGITHUB_PATHupdate. Smithy runners have no sudo; same binary, different
writable location.
deny: dropped
cargo deny check(which would fail loadingadvisory-db with CVSS 4.0) for
cargo deny check bans licenses sources. The audit job (stillon hosted) covers vulnerability matching meanwhile. Same
workaround spar landed in ci: pilot-migrate clippy job to smithy self-hosted runners spar#201.
Test plan
journalctl -u smithy-trace-eacces.servicegreen main-branch CI run
Rollback
Revert this commit. Every job goes back to
ubuntu-latest.