Skip to content

ci: migrate workflows to smithy self-hosted runners#97

Open
avrabe wants to merge 1 commit intomainfrom
smithy-migration
Open

ci: migrate workflows to smithy self-hosted runners#97
avrabe wants to merge 1 commit intomainfrom
smithy-migration

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 3, 2026

Summary

Migrates 12 of 24 GitHub Actions jobs across ci.yml, fuzz.yml, release.yml, and validate-shared.yml from GitHub-hosted runners to the smithy self-hosted fleet (hetzner-private runner group on pulseengine-ci-01). Follows the migration playbook and matches the patterns landed in pulseengine/spar#201, pulseengine/rivet#262, pulseengine/kiln#247, and pulseengine/gale#35.

Coverage

Class Count Jobs
rust-cpu (12 G) 9 rivet-validate, validate, benchmark, self-optimization (ci.yml); fuzz (fuzz.yml); test-shared, test-workspace, integration-test, check-api-stability (validate-shared.yml)
light (4 G) 3 format (ci.yml); coverage (fuzz.yml); verify-architecture (validate-shared.yml)
lean-mem (24 G) 0

Stays on hosted

Job File Reason
clippy ci.yml sudo apt-get install z3 — Z3 not on smithy
test ci.yml matrix spans macOS + Windows
build ci.yml matrix spans macOS + Windows
coverage ci.yml sudo rm -rf to free disk
verify ci.yml sudo apt-get install z3
wasm-build ci.yml sudo mkdir/tar to install wasi-sdk into /opt
rocq-proofs ci.yml Nix + Bazel (out of scope per playbook)
differential ci.yml sudo apt-get install binaryen
build-native release.yml matrix spans macOS + Windows
build-wasm release.yml sudo for wasi-sdk install
release release.yml sudo mv for oras + Cosign keyless OIDC tied to GitHub-hosted identity
format-and-lint validate-shared.yml sudo apt-get install z3

Each kept-hosted runs-on: has a one-line comment naming the reason.

Workarounds applied

None new — every migrated job is a clean one-line runs-on: change. The repo doesn't currently use EmbarkStudios/cargo-deny-action, rustsec/audit-check, or obi1kenobi/cargo-semver-checks-action, so the playbook's documented action-replacement workarounds aren't needed here. The existing cargo-semver-checks step in validate-shared.yml already uses direct cargo install + invocation, which works on smithy as-is.

Follow-ups (out of scope here)

  • If smithy ships z3 and binaryen in toolchains, four more jobs (clippy, verify, differential, format-and-lint) become trivially migratable.
  • If we rewrite the wasi-sdk install to extract under $HOME instead of /opt, wasm-build (ci.yml + release.yml) becomes migratable too.

Test plan

  • All migrated jobs land on rust-cpu / light runners and complete green
  • Hosted jobs (test, build, etc.) still run on GitHub-hosted as before
  • No changes to artifact uploads / release flow
  • Compile cache primes on first run; second push is faster on the same branch

Rollback

Revert this commit. All runs-on: flips back to ubuntu-latest and the next run uses GitHub-hosted compute.

  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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant