Skip to content

ci(GUI): consolidate per-OS releases into one draft (idempotent release job)#2824

Merged
ibell merged 1 commit into
masterfrom
ib/gui-release-consolidate
Apr 28, 2026
Merged

ci(GUI): consolidate per-OS releases into one draft (idempotent release job)#2824
ibell merged 1 commit into
masterfrom
ib/gui-release-consolidate

Conversation

@ibell
Copy link
Copy Markdown
Contributor

@ibell ibell commented Apr 27, 2026

Summary

Fixes the three-duplicate-drafts behaviour we hit on gui-v7.2.1-alpha.1. tauri-action was publishing a release from each of the three matrix jobs in parallel, each landing on the same tag and creating its own draft.

Restructure:

  • build matrix (unchanged in shape) — tauri-action just builds. No tagName / releaseName passed any more, so it stops trying to publish from inside the matrix. The existing actions/upload-artifact step still uploads wrappers/GUI/src-tauri/target/release/bundle/ per OS.
  • New release jobneeds: build, runs only on gui-v* tag pushes. Downloads each OS's coolprop-gui-<os> workflow artifact, copies the user-facing installers (.dmg, .app.tar.gz, .deb, .rpm, .AppImage, .msi, -setup.exe) into a staging dir, and uses softprops/action-gh-release@v2 to create one draft release with all of them attached.
  • Auto-detect pre-release from the tag suffix (-alpha / -beta / -rc) so we don't have to remember to flip the flag manually.
  • Sanity check fails the job if fewer than 5 installer files turn up — guards against a silent platform regression quietly publishing a partial release.

Behaviour

Trigger Build matrix Release job
push to master / ib/GUI etc. runs skipped
PR runs skipped
gui-v* tag runs runs after, publishes one draft

Test plan

The next gui-v* tag push exercises the change end-to-end. Until then, the build half is unchanged shape (still validated by every PR-trigger run).

This was uncovered while shipping #2715 → first alpha. Manual cleanup script applied for that release; future alphas should produce a clean single draft.

The previous configuration passed `tagName` to tauri-action on every
platform job. With three matrix entries racing to publish to the same
tag, each created its own draft release — leaving three separate
drafts (one with macOS bundles, one with Linux, one with Windows)
that had to be manually merged after every tag push. Just hit this on
gui-v7.2.1-alpha.1.

Restructure:

- tauri-action no longer publishes anything. It just builds and uploads
  the per-platform bundle directory as a workflow artifact (already
  happening; nothing new to wire).
- A new `release` job runs after the build matrix on `gui-v*` tags
  only. It downloads each OS's `coolprop-gui-<os>` artifact, copies the
  user-facing installer files (.dmg, .app.tar.gz, .deb, .rpm,
  .AppImage, .msi, -setup.exe) into a single staging directory, and
  uses softprops/action-gh-release to create one draft release with
  all of them attached.
- Pre-release flag auto-detects from the tag name (-alpha / -beta / -rc).
- A sanity check fails the job if fewer than 5 installer files turned
  up, so a silent platform regression doesn't quietly publish a
  partial release.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ibell ibell merged commit d55858c into master Apr 28, 2026
2 checks passed
@ibell ibell deleted the ib/gui-release-consolidate branch May 13, 2026 00:39
@ibell ibell added this to the v8.0.0 milestone May 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant