General: Move release process to GitHub Actions#564
Merged
Conversation
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 changed
No user-facing behavior change. Moves the release flow from a local
release.shscript to a GitHub ActionsRelease prepareworkflow. Releases are now cut viagh workflow run release-prepare.yml ...(or the GH Actions UI), with adry_run=truemode for plan-only previews.Technical Context
tools/release/bump.shis the new source of truth for parsing, validating, and rewritingversion.propertiesandVERSION. Mirrors theversionCodeformula inProjectConfig.kt. 32 bats tests cover bumps, bounds, drift, monotonicity, and write post-conditions.release-prepare.yml:compute-and-validate(no environment) writes the planned version to the run summary, thenpush-and-dispatch(foss-productionenvironment approval) commits, tags, atomically pushes, and dispatchesrelease-tag.yml. Reviewer sees the plan before approving.git push --atomic origin HEAD:refs/heads/main refs/tags/v<new>) so a failed half can't leavemainahead of the tag.gh workflow run release-tag.ymlafter the push —GITHUB_TOKENpushes don't trigger downstreamon: pushworkflows. Auth precheck in Job 1 fails fast if dispatch would fail later.release-tag.ymlgains avalidate-tagjob (regex ongithub.ref_name,bump.sh --mode=check, tag/version match) plus concurrency on the tag ref. Manualgh workflow run release-tag.yml --ref vfooor hand-pushedv*tags now fail before any build.--expected-currenttobump.shso a movingmainduring the approval wait fails fast.0..99(theversionCodeformulamajor*10M + minor*100K + patch*1K + build*10collapses at ≥100)..claude/rules/release.md—rctag →lane :production→ Play beta track at 10% rollout (manual promotion to production via Play Console). Reflects currentFastfilebehavior, not changed.Review checklist
release-prepare.yml— two jobs,foss-productionenv approval on Job 2validate-tagaddition inrelease-tag.ymlbats tools/release/bump.batslocally (32 tests, ~1s)release-prepare.ymlwithdry_run=trueto verify the pipeline before cutting a real release