chore(ci): move clippy + test from PR-time CI to release pipeline#21
Merged
Conversation
The `clippy + test (macOS ARM64)` job in ci.yml was burning ~15 minutes of the single shared self-hosted Apple Silicon runner on every PR push. That cost was hard to justify given that: - Local developers now have `make verify` / `make verify-clean` which reproduce the exact same `cargo clippy --features metal,accelerate -- -D warnings` + `cargo test --release --features metal,accelerate` invocation, so the runner round-trip wasn't adding signal that wasn't reachable locally. - The self-hosted runner is shared with the release pipeline, and PRs routinely starved release builds for runner time. This commit: 1. Removes the `clippy-and-test` job (and the now-obsolete header comment block) from `.github/workflows/ci.yml`. PR-time CI now runs only the lightweight cargo-deny + cargo-fmt gates on ubuntu. 2. Adds the same fmt / clippy / test steps to `release.yml`'s `build-macos` job, in front of the signed-build step. A clippy or test regression in release builds will now fail the release before any signing or packaging work happens. `release.yml::build-macos` already uses the same self-hosted runner with a persistent cargo target cache, so the lint/test steps benefit from incremental compilation and don't redo the full build for the artifact step that follows.
inureyes
added a commit
that referenced
this pull request
May 18, 2026
The `clippy + test (macOS ARM64)` job in ci.yml was burning ~15 minutes of the single shared self-hosted Apple Silicon runner on every PR push. That cost was hard to justify given that: - Local developers now have `make verify` / `make verify-clean` which reproduce the exact same `cargo clippy --features metal,accelerate -- -D warnings` + `cargo test --release --features metal,accelerate` invocation, so the runner round-trip wasn't adding signal that wasn't reachable locally. - The self-hosted runner is shared with the release pipeline, and PRs routinely starved release builds for runner time. This commit: 1. Removes the `clippy-and-test` job (and the now-obsolete header comment block) from `.github/workflows/ci.yml`. PR-time CI now runs only the lightweight cargo-deny + cargo-fmt gates on ubuntu. 2. Adds the same fmt / clippy / test steps to `release.yml`'s `build-macos` job, in front of the signed-build step. A clippy or test regression in release builds will now fail the release before any signing or packaging work happens. `release.yml::build-macos` already uses the same self-hosted runner with a persistent cargo target cache, so the lint/test steps benefit from incremental compilation and don't redo the full build for the artifact step that follows.
inureyes
added a commit
that referenced
this pull request
May 18, 2026
…ly (#23) PR #21 moved clippy+test from PR-time ci.yml to release.yml on the theory that paying ~15 min once per release was cheaper than paying it on every PR push. The first real run came in at ~30+ min on the shared self-hosted Apple Silicon runner, which inverts the trade-off — release builds now block on a slow lint/test pass that `make verify` would have caught locally in seconds. This commit removes the fmt/clippy/test steps from release.yml's `build-macos` job (and reverts the `components: clippy, rustfmt` addition), and updates ci.yml's header comment to document that the quality gate is local-only via `make verify` / `make verify-clean`. PR-time CI keeps cargo-deny + cargo-fmt on ubuntu (cheap, no self-hosted runner involvement). The release pipeline goes back to its pre-#21 shape: build, sign, package, upload.
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
The
clippy + test (macOS ARM64)job inci.ymlwas burning ~15 minutes of the single shared self-hosted Apple Silicon runner on every PR push. Withmake verify(added in #19) reproducing the exact same checks locally, the runner round-trip wasn't adding PR-time signal that wasn't already reachable from a developer's machine — and it was starving the release pipeline of the same runner.What changed
.github/workflows/ci.ymlclippy-and-testjob entirely.make verify(andmake verify-clean) and to note that lint/test signal is now released-time, not PR-time.cargo-deny+cargo-fmton ubuntu — both lightweight enough that they cost nothing..github/workflows/release.ymlFormat check,Clippy, andTeststeps tobuild-macos, in front of the signedBuild release binariesstep. A clippy or test regression in a release build will now fail the release before any signing / packaging / upload work happens.Install Rust toolchainstep withcomponents: clippy, rustfmt.The self-hosted runner already has a persistent
CARGO_TARGET_DIRcache, so the new lint/test steps benefit from incremental compilation and don't redo the full build for the artifact step that follows.Trade-off
make verifybecomes the obvious pre-push hygiene step.Verification