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

@orrinfrazier orrinfrazier commented May 24, 2026

Copy link
Copy Markdown
Owner

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
@github-actions github-actions Bot added the A-ci label May 24, 2026
@orrinfrazier orrinfrazier removed the A-ci label May 24, 2026
@orrinfrazier
orrinfrazier force-pushed the fix/s06-2-release-test-gate branch from 55481e0 to 75bab70 Compare July 28, 2026 23:17
@github-actions github-actions Bot added the A-ci Area: Related to CI. label Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-ci Area: Related to CI.

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