ci(release): one-click release from the Actions UI - #234
Merged
Conversation
Add a prepare-tag job so a maintainer can cut a release entirely from the Actions UI: pick a branch, type a version, and the workflow creates and pushes the tag at the branch tip before running the packaging matrix. No local git tag/push needed, and no PAT (the same run continues via needs:). The push-a-tag path is unchanged. Also assert the full 10-asset manifest in the release job before the draft is assembled, so a half-built matrix names the missing platform instead of failing as a generic dependency error.
…named The Universal2 job derived its .dmg name from `git describe --tags --always` on a shallow checkout with no tags, so it fell back to the short SHA (aMule-d813cbe-macOS-universal2.dmg) while every other artifact used the release tag. Fetch full history + tags so the dmg is named aMule-<tag>-macOS-universal2.dmg.
|
Awsome job, worked like a charm! |
Author
Yay! 🎉 |
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
Adds a one-click release path to
release.yml. A maintainer opens Actions → Release → Run workflow, picks the branch to release from, types a version (e.g.3.0.1), and the workflow creates the tag, builds every platform, and assembles a draft GitHub Release with all artifacts attached. No localgit tag/git push, and no PAT — the tag is pushed byGITHUB_TOKENand the same run continues vianeeds:, so the "GITHUB_TOKEN pushes don't re-trigger workflows" limitation never applies.Pushing a release tag from a local checkout still works exactly as before; this only adds the UI entry point.
How to cut a release
master).3.0.1or3.1.0-rc1, then click Run workflow.A hyphenated version such as
3.1.0-rc1is automatically marked as a pre-release. Re-running with a version whose tag already exists just re-assembles the assets, so a transient runner failure can be retried without cutting a new tag.Safety: artifact manifest gate
Before the draft is assembled, the release job asserts that all ten expected assets are present and names any that are missing:
.dmg×1.zip×2 (x64, arm64).exe×2 (x64, arm64)If any are absent the job fails and no draft is produced, so a half-built matrix can't silently ship an incomplete release.
Also in this PR
Fixes the
macos-universal2job to fetch tags, so the Universal2.dmgis namedaMule-<tag>-macOS-universal2.dmginstead of falling back to the short commit SHA on its shallow checkout.Validation
Run end-to-end on a fork with version
0.0.0-fork-test: the tag was auto-created at the branch tip, the full 14-job matrix went green, the manifest gate reported all ten assets, and a draft pre-release was produced with every asset correctly version-named.