Repository navigation
ci(gui): build and attach installers from the release-please run (#189) - #198
Merged
Merged
Conversation
gui-release.yml ran on `release: published`, but release-please publishes the Release with GITHUB_TOKEN and GitHub never starts a workflow for an event that token created, so it had zero runs and v2.1.2 to v2.1.4 shipped without installers. Following Aurelius's release chain, gui-release.yml is now a reusable workflow (`workflow_call` with the tag) that release-please.yml calls in the same run once `release_created` is true. `workflow_dispatch` stays for a manual build: with a tag it attaches the installers to that Release (retry a platform, back-fill an older release); without one it is a dry run that keeps the installers as workflow artifacts. `release: published` stays for a Release published by hand. While here: build exactly the tagged commit, produce both macOS DMGs (--x64 --arm64), skip the signing-identity lookup, carry gui.yml's Electron-binary guard and side-effects-cache setting, keep installers as artifacts on every run, and document the chain in docs/GUI.md and docs/RELEASING.md. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Collaborator
Author
|
Result of the manual dispatch against v2.1.4 (run 42518497713): all three platforms installed, built, passed the smoke test and packaged the installers in about 90 seconds each (macOS produced both DMGs). The only failing step was the upload: |
PAMulligan
marked this pull request as draft
November 8, 2026 20:15
PAMulligan
marked this pull request as ready for review
November 8, 2026 20:17
This was referenced Nov 8, 2026
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.
Closes #189. Part of #186.
Problem
gui-release.ymlwas triggered byrelease: published, but release-please publishes the Release withGITHUB_TOKEN, and GitHub never starts a workflow for an event that token created. The workflow had zero runs; v2.1.2, v2.1.3 and v2.1.4 shipped without installers.A first version of this PR (Aurelius's publish-then-attach shape) built and packaged on all three platforms in about 90 seconds each, then every upload failed with
HTTP 422: Cannot upload assets to an immutable release: this repository has GitHub's immutable releases enabled (Aurelius does not). Nothing can be attached after publication, and no already-published release, v2.1.4 included, can be back-filled.Fix: draft first
release-please-config.json:"draft": trueand"force-tag-creation": true. release-please creates the tag immediately and the Release as a draft (without the eager tag, GitHub would create it only on publish, which release-please's docs say breaks its lookup of the previous release).release-please.ymlexposesrelease_createdandtag_nameand callsgui-release.ymlin the same run with the tag,secrets: inherit.gui-release.ymlis a reusable workflow with three jobs:checkrefuses a tag whose release is not a draft (published releases are immutable here);buildchecks out the tagged commit, builds both macOS DMGs, the NSIS EXE and the AppImage, smoke-tests each, keeps them as workflow artifacts and attaches them to the draft with--clobber;publishruns only when every platform succeeded and flips the draft to published, listing the assets in the job summary.workflow_dispatchwith a tag reruns the attach-and-publish for a draft that an earlier run left unpublished; without a tag it is a dry run that keeps the installers as artifacts. Therelease: publishedtrigger is gone, since it could only ever fail on this repository.docs/GUI.mdanddocs/RELEASING.mddescribe the chain and the recovery path.Verification
tag=v2.1.4(a published release): the check job must fail with the "already published" message and skip the build.Flavian-<version>.AppImage,Flavian Setup <version>.exeand the two DMGs.🤖 Generated with Claude Code