1.6 KiB
Releasing Sprout
This describes how a maintainer cuts a release of Sprout. A release is a signed tag plus a GitHub release that holds the built EFI binaries and their attestations.
The release is built and published by the release workflow, so the release is never visible
until its artifacts are attached.
Steps
-
Bump
versionin the[workspace.package]section ofCargo.tomlto the new version, then run./hack/assemble.shto updateCargo.lock. -
Open a pull request with the result. The commit and the PR title are
sprout: version x.y.z, which is the one place we do not use a conventional commit. Once squashed, the commit onmainissprout: version x.y.z (#PR_NUMBER). -
Once the PR has merged, create a signed tag on the merged commit. The tag message is just the tag name.
git tag -s v0.0.8 -m v0.0.8 git push origin v0.0.8 -
Draft a new release on GitHub for that tag, named after the tag, and click Generate Release Notes. Add a blank line after every section header, as GitHub does not always do that. Do not click Publish.
-
Run the
releaseworkflow from the Actions tab, selecting the tag as the ref to run from, and set theRelease Taginput to the tag name (for examplev0.0.8). The workflow builds the tagged commit, uploads the binaries to the draft release, attests them, and then publishes the release.
Notes
- The release workflow builds the tag, not the branch it was dispatched on, so check the tag points at the version bump commit before running it.
- Re-running the workflow for the same tag replaces the uploaded assets, and runs for one tag never overlap.