ci(desktop): guard the installers and version-pin release notes - #150
Merged
Conversation
Two gaps in the release job, found reviewing #146 while cutting 0.2.0-beta.2. Nothing checked that both installers arrived. `download-artifact` does not fail when its `pattern` matches no artifacts, so a partial download would have published a release with one installer plus a SHA256SUMS.txt that looked complete. Adds an explicit count check for exactly one .dmg and one .exe before anything is hashed or uploaded. The release body was a hardcoded blurb in the workflow, which meant notes written by hand on the release page were silently replaced the moment the job was re-run — and every release after the first got two sentences, so 0.2.0-beta.1 and beta.2 both had to be edited afterward. The body now comes from apps/desktop/release-notes/<version>.md, checked in alongside the version bump. The filename carries the version so notes cannot go stale against a newer tag, and a tag with no file falls back to the old blurb rather than failing, which keeps re-runs of existing tags working. `actions/checkout` is added ahead of the download step, not after: it cleans the workspace by default and would otherwise delete the installers. Verified by extracting both `run:` scripts exactly as Actions de-indents them and executing them: the notes step covers present and missing notes files, and the guard passes on one dmg + one exe and exits 1 on dmg-only, exe-only, and empty. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EdbfY8FiReoKH32UKeKfzN
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.
Two gaps in
desktop-ci.yml's release job, found reviewing #146 while cuttingdesktop-v0.2.0-beta.2.Worth noting up front: #146's own fix is verified working. Its first-ever production run was beta.2, and the CI-generated
SHA256SUMS.txthashes match GitHub's asset digests exactly, with filenames matching the uploaded assets (Franklin.Setup.0.2.0-beta.2.exe). This PR addresses what that code does not cover.Nothing checked that both installers arrived
download-artifactdoes not fail when itspatternmatches no artifacts, so a partial download would publish a release with one installer plus aSHA256SUMS.txtthat looks complete — the checksum step succeeds either way. Adds an explicit count check for exactly one.dmgand one.exebefore anything is hashed or uploaded.Release notes were destroyed by re-runs
The body was a hardcoded two-sentence blurb in the workflow.
action-gh-releaseupdates an existing release, so notes written by hand on the release page were silently replaced the moment the job was re-run. And since every release got the same two sentences, both beta.1 and beta.2 had to be hand-edited afterward.The body now comes from
apps/desktop/release-notes/<version>.md, checked in with the version bump:RELEASE_NOTES.md.actions/checkoutis added ahead of the download step, not after: it cleans the workspace by default and would otherwise delete the installers.beta.2's published notes are checked in as the first file, so a re-run of that tag now reproduces what is live.
Verification
Both
run:scripts were extracted exactly as Actions de-indents the YAML block scalars, then executed:name=Franklin Desktop 0.9.9name=Franklin Desktop 0.2.0-beta.3Not addressed
softprops/action-gh-release@v2is a floating major tag on a job holdingcontents: write, so its code changes without review. (Checked: the Node 20 deprecation does not apply —v2'saction.ymlcurrently declaresusing: "node24".v3.0.3exists if you want to pin deliberately.)🤖 Generated with Claude Code
https://claude.ai/code/session_01EdbfY8FiReoKH32UKeKfzN