Releasing¶
Releases are automated via GitHub Actions. Pushing a version tag triggers the release workflow, which builds all platform packages, creates a GitHub Release, and updates the Homebrew tap.
Prerequisites¶
Tag protection¶
A tag protection rule should be configured so only authorised
maintainers can push v* tags. Set this up in GitHub under
Settings → Rules → Rulesets (or the older Settings → Tags):
- Pattern:
v* - Restrict who can create matching tags: maintainers only
This prevents accidental or unauthorised releases.
HOMEBREW_TAP_TOKEN¶
A repository secret HOMEBREW_TAP_TOKEN must be configured in the
ryll repo settings. This is a GitHub personal access token (classic
with repo scope, or fine-grained with write access to
shakenfist/homebrew-tap). Without it, the Homebrew tap update step
will fail — but the GitHub Release will still be created successfully.
Release process¶
- Update the version in
Cargo.toml:
- Commit the version bump:
- Tag and push:
- Wait for the workflow to complete. It will:
- Verify the tag matches
Cargo.toml(fails and files an issue if they don't match). - Build release binaries on Linux, macOS, and Windows.
- Run tests on all platforms.
- Package:
.deb,.rpm, macOS.tar.gz, Windows.zip. - Create a GitHub Release with auto-generated release notes and all artifacts attached.
-
Update
shakenfist/homebrew-tapwith the new version and SHA256 for the macOS tarball. -
Verify the release at https://github.com/shakenfist/ryll/releases
Artifacts produced¶
| Platform | Artifact | Contents |
|---|---|---|
| Debian/Ubuntu | ryll_{version}-1_amd64.deb |
Binary + auto-detected deps |
| Fedora/RHEL | ryll-{version}-1.x86_64.rpm |
Binary + auto-detected deps |
| macOS (Apple Silicon) | ryll-{version}-aarch64-apple-darwin.tar.gz |
Binary |
| Windows | ryll-{version}-x86_64-pc-windows-msvc.zip |
Binary (no --capture) |
Troubleshooting¶
Version mismatch¶
If the tag doesn't match Cargo.toml, the workflow fails and
creates a GitHub issue. Fix the version, commit, delete the bad
tag, and re-tag:
git tag -d v0.2.0
git push origin :refs/tags/v0.2.0
# fix Cargo.toml, commit, then re-tag
git tag v0.2.0
git push origin v0.2.0
Homebrew tap update fails¶
If the HOMEBREW_TAP_TOKEN secret is missing or expired, the
tap update job fails but the release is still created. Update
the formula manually: