Repository navigation
ci: take release and smoke off the test path, publish only after every gate - #927
Open
solace-aross wants to merge 3 commits into
Open
solace-aross wants to merge 3 commits into
solace-aross wants to merge 3 commits into
Conversation
solace-aross
requested review from
sgamelin,
shortishly and
solace-wkourlas
as code owners
October 9, 2026 20:13
solace-aross
force-pushed
the
ci/sol-155828-release-off-test-path
branch
from
October 9, 2026 20:23
c86a698 to
e75c698
Compare
reubenjds
reviewed
Oct 9, 2026
Collaborator
Author
|
@reubenjds thank you for the careful review. All five points are in (head 6a13e36), and each thread has a reply. One note on CI: the I will leave this open for a few more sets of eyes. |
…y gate test no longer waits for fmt and clippy, release waits only for src and typos, and smoke waits only for the Linux release legs. macOS runs beside them as a compile-only check, and builds the release tarball on v* tags only. smoke builds its image locally. No CI run pushes an image except publish, which runs on push to main and v* tags after every job ci-gate needs. build-storage, build-storage-lake and the compat jobs restore test's cache. The same-repo Tier B condition is written once with a YAML anchor. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Andrea Ross <168456375+solace-aross@users.noreply.github.com>
…bs uncached macos stays a cargo check except on v* tags. A nightly macos-release job in tier-c.yml builds the release on main. release and macos no longer wait for src. build-storage and build-storage-lake use no cache again. publish holds only packages: write; publish-release (tags, release environment) holds contents: write. The image-* artifacts are kept 3 days on push runs. The nightly test job restores ci.yml's dev cache key. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Andrea Ross <168456375+solace-aross@users.noreply.github.com>
Each push run has its own concurrency group, and publish now waits for every Tier B job, so an older commit's run can finish after a newer one and move the main image backwards. On a branch push, publish checks that its commit is still the branch tip before pushing. Tags are unchanged. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Signed-off-by: Andrea Ross <168456375+solace-aross@users.noreply.github.com>
solace-aross
force-pushed
the
ci/sol-155828-release-off-test-path
branch
from
October 9, 2026 21:58
6a13e36 to
702ed9b
Compare
Collaborator
Author
|
Rebased on main and added one commit (702ed9b). |
This branch has not been deployed
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.
What does this change do, and why?
Reshapes the
ci.ymlneeds graph so a queue run no longer waits ontestbefore it builds and smoke-tests the release, and so only a fully gated push run can publish anything.testno longer waits forfmtandclippy.releasewaits only fortypos(andchanges) and builds the two Linux musl binaries.smokeandsmoke-oldest-clientwait only forrelease.srcstays inci-gateand inpublish's needs; nothing downloads its artifact, soreleaseno longer waits for it.macosjob:cargo check --bin nisshi --all-features --target aarch64-apple-darwinon pull requests, queue entries and pushes to main, and the fullcargo auditable build --releaseplus tarball onv*tags only.macosstays inci-gate. A nightlymacos-releasejob intier-c.yml(main only, no upload) builds the full macOS release so link and release-profile breaks show up before a tag; a red build opens thenightly-failureissue.publish. Thepackagejob is gone (it pushed on same-repo PRs and queue runs).smokebuilds its image locally fromrelease's binaries.publishruns on push tomainandv*tags only, needs the same list asci-gate(a red or skipped job anywhere stops it), pushes the multi-arch image (mainon main; semver andlateston tags), and holds onlypackages: write. On main it pushes only while its commit is still the branch tip: each push run has its own concurrency group, so a slower run for an older commit could otherwise move themainimage backwards. If the tip's own run fails, re-running it publishes.publish-releaseruns on tags only, needspublish, holdscontents: write, and runs in thereleaseenvironment, whose deployment policy allowsv*tags only (no required reviewers). It uploads the tarballs. The upload moved out ofrelease, so a failed leg can no longer publish a partial release. Neither job is inci-gate's needs, because the "nothing skipped off pull_request" step would fail every queue run.publish-releaseis re-run. Release-first would put aneedson a job that is skipped on main pushes, which would skippublishthere.image-*artifacts keep 3 days on push runs (so a re-run ofpublishstill finds them) and 1 day otherwise, about 134 MB per run.test's Rust cache (cache-shared-key: dev, never save), andtier-c.yml'stestuses the same key.RUST_BACKTRACEandRUST_LOGmoved from job env to step env, because rust-cache hashesRUST*variables into the key.build-storageandbuild-storage-lakekeepcache: false, sincecargo checkreuses little of a full build.CLAUDE.mddescribes the new graph.Expected effect (estimate, not verified until a real queue run): a queue run goes from about 45 min to about 18 min. The longest chain becomes
release(13.7 min) thensmoke(about 2.3 min), withtest(14.5) andcargo-publish-dry-run(14.3) beside it. The macOS check took 8.4 min cold and 3.3 min warm on a throwaway branch; the full macOS build took 17.5 to 21.2 min.How was this tested?
actionlintandzizmor(theWorkflow lintchecks) pass.release,macosand local-imagesmokelegs.publish,publish-release, the multi-arch push and the release upload have not run. The first main push and the first tag will be their first runs.devkey is cold until the first push to main saves it.Notes: queue settings are untouched. Anything queued that edits
smoke,packageor theneedslines will need a rebase.release.yml(crates.io, on anyv*tag, noneedson CI) is unchanged and still not gated by this workflow.Checklist
git commit -s) — see CONTRIBUTING.mdjust fmt,just clippy, andjust testpass locally (not applicable, workflow and docs only)🤖 Generated with Claude Code