ci: beta soak channel + digest-copy stable promotion - #142
Merged
Conversation
Let pre-releases soak before a stable release instead of every version tag moving :latest immediately. - release.yml: derive a release channel from the tag. A pre-release tag (vX.Y.Z-beta.N / -rc / -alpha) publishes the moving :beta tag and the immutable version tag, and never moves :latest, across GHCR and both mirrors. A plain vX.Y.Z tag is stable and moves :latest as before. The GitHub pre-release flag was already derived from the tag name. - promote-release.yml (new, workflow_dispatch): promote a soaked pre-release. Copies the exact soaked image DIGEST to :vX.Y.Z + :latest (no rebuild), rebuilds the standalone binaries from the same commit, and publishes the stable GitHub release. The stable release/tag is created with the default GITHUB_TOKEN so it does not re-trigger release.yml and overwrite the promoted image. - RELEASING.md: document the dev/beta/stable channels and the soak-then-promote flow, including that the promoted image is byte-identical to the soaked beta. The soak instance itself (which tracks :beta) lives in the operator's own deployment config, not in this repo. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TpoFnScdkRq7qxQLQZe1we
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.
Adds a beta soak channel so pre-releases can bake before a stable release, instead of every version tag moving
:latestimmediately.Changes
release.yml— channel guard. ADetermine release channelstep maps the tag to a moving tag:vX.Y.Z-beta.N/-rc/-alpha) → publishes:vX.Y.Z-…+:beta, and never moves:latest, across GHCR + both mirrors. GitHub prerelease flag was already tag-derived.vX.Y.Z→:latestas before (stable).promote-release.yml(new,workflow_dispatch). Promote a soaked pre-release:resolve(validate prerelease shape + reachable frommain, strip suffix) →promote-image(skopeo digest-copy the exact soaked image to:vX.Y.Z+:lateston all three registries, verifying digests) →publish-stable-release(rebuild binaries from the same commit, publish the stable GitHub release). The stable release/tag is created with the defaultGITHUB_TOKENso it does not re-triggerrelease.ymland overwrite the promoted image.RELEASING.md— documents dev/beta/stable channels and the soak→promote flow.Notes for the reviewer
:vX.Y.Zis byte-identical to the soaked beta, so its embedded build ref still reads-beta.N. The tag is stable; the internal version shows the promoted lineage (documented). Alternative would be a rebuild, losing bit-identity.:betalives in the operator's deployment config, not this repo.GITHUB_TOKENre-trigger avoidance, digest-copy) is validated by the first-betatag + first promote; static checks (YAML, runner-policy) pass.🤖 Generated with Claude Code
https://claude.ai/code/session_01TpoFnScdkRq7qxQLQZe1we