Repository navigation
Add patch releases to the release automation - #922
Merged
Merged
Conversation
Start patch cuts patching/x.y.z from the highest tag of a release line and cherry-picks chosen main pull requests with -x. Prepare release accepts a patch branch, derives the version from its name, validates the source tag and unchanged version file, and refuses breaking items. Finalize opens a notes-only pull request into main for a patch, reusing a notes branch left by a failed run, and deletes the patching and releasing branches with a lease on their validated tips. The release guide and wizard cover the patch path.
🤖 GitHub commentsJust comment with:
|
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Resolve the patch-capability validation gap and preserve an in-flight notes marker until the notes pull request is merged.
Review effort: Lite
Findings: 1
Open (1)
What changed in this PR
Adds automated patch-release support for Android release lines, including branch creation, cherry-picking, preparation, finalization, documentation, and wizard guidance.
Changes:
- Adds patch-start workflows and version helpers.
- Extends release preparation, PR-range, and finalization logic.
- Documents patch workflows and recovery procedures.
| File | Description |
|---|---|
skills/android-release-wizard/SKILL.md |
Documents patch-release operation. |
RELEASING.md |
Adds patch workflow and recovery guidance. |
.github/workflows/start-patch.yml |
Defines patch-start workflow. |
.github/workflows/prepare-release.yml |
Allows patch branches. |
.github/workflows/publish-release.yml |
Generalizes success messaging. |
.github/scripts/release/version.sh |
Adds patch version operations. |
.github/scripts/release/start-patch.sh |
Creates patch branches and cherry-picks fixes. |
.github/scripts/release/prepare-release.sh |
Validates and prepares patch releases. |
.github/scripts/release/pr-range.sh |
Resolves cherry-picked pull requests. |
.github/scripts/release/finalize-release.sh |
Finalizes patches and manages branches. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Leave branch deletion to the operator, as in the main flow. Reuse a pushed notes branch as is, check only that a patch branch contains its source tag, and let version.sh own release-line validation.
version.sh previous-tag owns the rule for the tag a release follows. Prepare release and the release-notes draft both use it, so a draft from a patch branch starts at that branch's source tag and does not re-list an earlier patch's fixes. Prepare release also refuses a patch branch whose version is already tagged, before it pushes anything.
LikeTheSalad
marked this pull request as ready for review
September 28, 2026 10:43
jackshirazi
approved these changes
Sep 28, 2026
v1v
approved these changes
Sep 28, 2026
Merged
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.

Summary
Adds patch releases to the release automation. A patch ships fixes for a released
x.y.zasx.y.(z+1)without unreleasedmainwork. The operator starts a patch from a release line, adds fixes through pull requests into the patch branch, and then uses the existing Prepare release and Publish release workflows.Most of the
finalize-release.shdiff re-indents the existing ending for a release frommainunder a new condition. Hiding whitespace in the diff view shows the real change.Changes
vX.Y.*tag of the requested line, createspatching/x.y.zfrom it, and cherry-picks the selected mergedmainpull requests with-x. It pushes only after every cherry-pick succeeds. It stops when the line has no release, when the release predates this automation, when the patch branch already exists, or on a cherry-pick conflict.highest-tag <line>,next-patch, andprevious-tag <ref-name>toversion.sh.previous-tagis the one rule for the tag a release follows, used by both Prepare release and the release-notes draft, so a draft dispatched on a patch branch starts at that branch's source tag.(cherry picked from commit <sha>)trailer inpr-range.sh, and excludepatch-notes/*pull requests.patching/x.y.z. The version comes from the branch name, the branch must contain the previous tag, a version that is already tagged is refused, breaking items are refused, andapplies_tometadata is left unchanged.finalize-release.sh. It opens a notes-only pull request frompatch-notes/x.y.zintomainwith the section inserted in version order, and reuses a notes branch left by a failed run. As in the release frommain, the operator deletes thepatching/x.y.zandreleasing/x.y.zbranches afterwards.RELEASING.mdwith the patch path and its failure and recovery cases.