ci(release): add a workflow_dispatch recovery path for an existing tag - #61
Draft
amondnet wants to merge 1 commit into
Draft
ci(release): add a workflow_dispatch recovery path for an existing tag#61amondnet wants to merge 1 commit into
amondnet wants to merge 1 commit into
Conversation
GitHub creates no push event for a tag beyond the third in a single push, so a batch backfill strands every later tag with no run and no way to re-trigger one short of deleting and re-pushing the tag. The dispatch input names an existing tag; the run still derives everything from that tag and decides for itself which phases it owes, so the tag remains the source of truth. Resolving the tag once at job level also fixes what the dispatch path would otherwise get wrong: a dispatched run's ref is the branch it started from, so the checkout, the concurrency group and every step that read github.ref_name would have operated on the branch instead of the release.
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Up to standards ✅🟢 Issues
|
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.



Problem
GitHub creates no push event for a tag beyond the third in one push. Pushing ten tags at once
during the Spring Boot 3.x backfill triggered zero release runs (verified: the same ten tags
landed on the remote,
gh run listshowed nothing; a subsequent push of exactly three triggeredthree runs). A stranded tag has no recovery path —
release.ymltriggers only on tag push, and apublished tag is never deleted or moved, so the only options were deleting an unpublished tag or
publishing a misleading
+rebuild.N.Change
workflow_dispatchwith a requiredtaginput. The tag stays the source of truth: the input onlynames which tag to run, and
release-mode.tsstill decides whether that tag owespublish,register, or nothing.Resolving the tag once in a job-level
env: TAGalso fixes what the dispatch path would otherwiseget wrong — a dispatched run's
github.ref_nameis the branch it was started from, so:ref: ${{ inputs.tag || github.ref_name }}; without it a dispatch wouldbuild the default branch's tree and publish it under a tag's name
github.ref_nameinherit the resolved value insteadFor a push event
inputs.tagis empty, so every expression falls back to the pushed tag andbehavior is unchanged.
Verification
yaml.safe_loadparses the file;on=[push, workflow_dispatch], job env resolves as intended.30+ release runs of this backfill exercised that path.
workflow_dispatchis only offered for workflows present there. First dispatch will be
boot-3.3.0-boot-3.3.9.Follow-up (not in this PR)
Two release runs failed at the availability gate with
fetch-upstream failed: The socket connection was closed unexpectedlywhen ~30 runs probed Maven Central concurrently. A re-run cleared both, butartifact-availability.tshas no retry/backoff — worth adding before the next bulk backfill.Summary by cubic
Adds a
workflow_dispatchrecovery path so an existing release tag that never ran can be triggered manually. GitHub creates no push event for tags beyond the third in one push, so a batch backfill strands every later tag with no run and no way to re-trigger it.The tag stays the source of truth — the input only names which tag to run, and the workflow still decides what that tag owes. A dispatched run's
github.ref_nameis the branch it started from, so the tag is resolved once at job level and used for the checkout, the concurrency group, and every step that previously readgithub.ref_name. Push events leave the input empty, so that path behaves exactly as before.Written for commit 211e4cb. Summary will update on new commits.