fix(ci): serialize build-macos release runs so the v* tag build is not dropped (VA-136) #143
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/VA-136-build-macos-concurrency"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes VA-136: build-macos.yml drops the
v*tag build at release time when the single macOS runner is busy, so macOS misses the pinnedX.Y.Zandstablechannels.Root cause (confirmed on the running Forgejo 14.0.2)
On a release, two push events fire near-simultaneously and both match build-macos.yml:
latestv*tag pushed by create-release.yml (tag context) -> publishes pinnedX.Y.Z+stableWith no
concurrencyblock, the Forgejo Actions reference states it auto-manageson.pushruns by cancelling any other invocation of the same workflow when a new event arrives. On the single self-hosted macOS runner one of the two near-simultaneous runs gets cancelled, so v0.4.0 macOS published onlylatest(run 558, branch) with no tag run at all, while the multi-slot Linux/Windows container runners published pinned + stable normally (runs 563/564).Fix
Add a fixed workflow-level concurrency group with
cancel-in-progress: false:Per the Forgejo Actions reference,
cancel-in-progress: falsewith a group replaces the default auto-cancellation with sequential queuing: any previous invocation in the group completes before the newer one runs. So at release the branch run finishes (publisheslatest), then the queued tag run executes (publishes pinned + stable). A fixed group serializes all macOS builds, which is harmless since there is only one macOS runner.Scope
Validation
cancel-in-progress: falsesequential-queue behavior that fixes it.cancel-in-progress: falsepresent; job intact).latestplus pinnedX.Y.Z+stable. (This workflow is push/tag-triggered, so it does not run on this feature-branch PR.)🤖 Generated with Claude Code