Skip to content

chore(ci): test-gate release builds with clippy + cargo test#7

Open
orrinfrazier wants to merge 1 commit into
mainfrom
fix/s06-2-release-test-gate
Open

chore(ci): test-gate release builds with clippy + cargo test#7
orrinfrazier wants to merge 1 commit into
mainfrom
fix/s06-2-release-test-gate

Conversation

@orrinfrazier
Copy link
Copy Markdown
Owner

@orrinfrazier orrinfrazier commented May 24, 2026

Closes #17

Summary

  • release.yml built release binaries with no test/clippy step — the exact release commit+toolchain was never test-gated (only main CI + the manual misc/RELEASE_CHECKLIST.md covered it).
  • Adds Clippy + Test steps to the build job before Build, mirroring ci.yml, so a lint/test failure fails the job before any binary is produced or uploaded.
  • Gating runs per-OS across the existing matrix, so each released binary is validated on its own OS + toolchain.

Changes

Single file: .github/workflows/release.yml

  • env: add RUST_BACKTRACE, RUST_MIN_STACK, CMD_CLIPPY, CMD_TEST (copied verbatim from ci.yml).
  • Install Rust step: add components: clippy.
  • New steps before Build, in order: Install dependencies (Windows) (lukka/get-cmake, for randomx-rs) → Download monerod (./.github/actions/monerod-download, required by the test suite) → Clippy (fail on warnings)Test.
  • Final step order: Checkout → Install Rust → Install deps (Windows) → Download monerod → Clippy → Test → Build → Generate Archives → Archive.

Why "add steps" over "require a prior CI run"

Release is workflow_dispatch on an arbitrary inputs.commit that may never have had a CI run, and since stable floats, a prior run wouldn't validate the same toolchain. Gating in-job is the only approach that tests the exact release commit+toolchain — the issue's core complaint.

Deliberately out of scope

  • No toolchain pinning (tracked separately as S06-1).
  • No build caching (keeps release builds clean/reproducible).
  • Pre-existing ShellCheck warnings in the unchanged Generate Archives block (not introduced here; this repo's CI does not run actionlint).

Testing

  • actionlint .github/workflows/release.yml: no new findings vs origin/main (the 6 ShellCheck warnings are pre-existing in the untouched Generate Archives block).
  • 13/13 structural acceptance assertions pass (env vars, clippy component, monerod/cmake steps, step wiring/order, ref preserved, toolchain unpinned, Build preserved).
  • Reviewed via cross-family consensus (Claude + Gemini + Codex). No blockers.

Resolves issues/S06-2-release-test-gate.md

release.yml built release binaries via `cargo build --release --package
cuprated` with no test or clippy step, so the exact release
commit+toolchain was never test-gated (only `main` CI and a manual
checklist covered it).

Add Clippy + Test steps before Build in the release job, mirroring
ci.yml: clippy component, Windows cmake (randomx-rs), monerod download,
and CMD_CLIPPY/CMD_TEST + RUST_BACKTRACE/RUST_MIN_STACK env. Steps run
per-OS in the matrix so each binary is gated on its own OS+toolchain, and
a lint/test failure fails the job before any binary is built or uploaded.

Resolves issues/S06-2-release-test-gate.md
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.

release.yml: build release binaries without running tests or clippy

1 participant