ci(release): serialize desktop publish matrix to avoid duplicate releases#84
Merged
Conversation
…releases The publish-desktop matrix ran windows and macos with `electron-builder --publish always` concurrently. When both legs published at once, each created its own GitHub release for the same tag, splitting the v1.1.2 assets across two releases (the Windows installer landed on a duplicate, not the "Latest" one). max-parallel: 1 serializes the legs so the second uploads to the release the first already created.
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
The v1.1.2 release was split across two GitHub release objects for the same tag: the "Latest" one had only the macOS
.dmg+ SBOM, whileonot-Setup-1.1.2.exelanded on a duplicate release. Users clicking Latest got no Windows installer. (The v1.1.2 assets have since been consolidated onto one release by hand.)Cause
publish-desktopruns the windows and macos legs concurrently, each withelectron-builder --publish always. Publishing at the same time, each leg created its own release for the tag (a known electron-builder multi-CI race). It happened to not trigger on v1.1.0/v1.1.1 but did on v1.1.2.Fix
strategy.max-parallel: 1serializes the legs, so the first creates the release and the second finds it by tag and uploads to it. The release-time asset-name check added earlier (Verify published installer names match the docs) already catches this class of failure if it recurs.A heavier alternative (build artifacts with
--publish never, then a single job creates the release and uploads all OS assets) is more robust but a larger change; serialization is the minimal reliable fix.