Repository navigation
ci: draft releases and a Legacy build in the Release workflow - #202
Merged
Merged
Conversation
- "draft": with publish, the release is created as a draft. Only people with write access see it: the app's update check doesn't, the winget job is skipped and the tag is created when the draft is published. - "legacy": a branch (release/1.7-legacy) built by its own job, with its own tests and publish script and this release's version, renamed to ConsoleMode-Legacy-*.exe and attached to the same release, with a Legacy section in the notes. The update check and winget match other names, so nobody is updated to Legacy. - winget.yml: sends a stable release to winget when a person publishes it (the draft's way out), or by hand for a tag. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Important
The Legacy job runs code from an input-selected ref with the release workflow's write-capable token.
Reviewed changes
- Draft releases: Adds a dispatch input to create releases as drafts and avoids sending drafts to winget.
- Legacy assets: Builds a selected branch and includes its renamed installer and portable executable in the release.
- Winget delivery: Adds a workflow to submit stable releases published manually from a draft.
- Guide updates: Documents the release inputs in English and Portuguese.
gpt-6-luna | 𝕏
It runs the tests and the publish script of a branch named at run time: contents: read only, and the checkout does not keep the token. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Merged
Contributor
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes The incremental review covers the Legacy job's credential restrictions added since the prior Pullfrog review.
- Restricted Legacy credentials: Limited the job token to
contents: readand disabled persisted checkout credentials while running the selected branch's code.
gpt-6-luna | 𝕏
Closed
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.

What
The owner wants 1.7.0 out first as a test release nobody receives, with a Legacy download (1.6.2's interfaces, #200) in the same release.
draftinput. Withpublish, the release is created as a draft (softprops/action-gh-releasedraft: true). Drafts are visible only to people with write access: the unauthenticated releases API the app's update check reads doesn't list them, thewingetjob is skipped, and GitHub creates the tag only when the draft is published (ontarget_commitish, the commit that was built). A pushed tag never makes a draft.legacyinput. A branch name. Alegacyjob checks it out, runs its tests and itsPublish-ConsoleMode.ps1with this release's version, renames the two files toConsoleMode-Legacy-Setup-x64.exe/ConsoleMode-Legacy-Portable-x64.exeand uploads them as an artifact; thebuildjob fetches them (gh run downloadof the same run, henceactions: read) and attaches them to the release in the same step as the normal files, with a "Legacy" section in the notes.UpdateServicematchesConsoleMode-Setup*/ConsoleMode-Portable*and wingetConsoleMode-Setup-x64\.exe$, so neither picks a Legacy file.buildnowneeds: legacy; both it andwingetuse!cancelled()conditions so a skipped Legacy job (the normal case, and every pushed tag) doesn't skip them.winget.yml. A draft published by a person firesrelease: published, which sends a stable release to winget; it can also be run by hand for a tag. Releases the Release workflow publishes right away don't fire that event (workflow token), so they keep going through thewingetjob and nothing is submitted twice.docs/GUIDE.md/docs/GUIDE.pt-BR.md: the release paragraph mentions both inputs.Testing
Both files parse as YAML. The workflow itself can only be proven by running it: after merge, a run with
publishunticked andlegacy=release/1.7-legacy(build only, nothing published) comes first, then the draft.🤖 Generated with Claude Code