This project uses cargo-dist to automate cross-platform releases. Binaries and installers for Linux, macOS, and Windows are automatically built and uploaded to GitHub Releases when a version tag is pushed.
brew tap spoke-sh/tap
brew install keelcurl --proto '=https' --tlsv1.2 -LsSf https://github.com/spoke-sh/keel/releases/latest/download/keel-installer.sh | shnix run github:spoke-sh/keelkeel upgrade
keel upgrade --ref v0.2.2
keel upgrade --ref 533fa5b8keel upgrade uses the published release installer by default. keel upgrade --ref <tag-or-sha> refreshes a cached source checkout under ~/.cache/keel, looks for a supported Rust toolchain, builds a host-local installer bundle, and then installs that build through the generated installer script.
Keel publishes its Homebrew formula into the public tap repo spoke-sh/homebrew-tap. Homebrew users install that tap with the short form spoke-sh/tap.
Before cutting a release that should update Homebrew, configure these settings on the spoke-sh/keel GitHub repository:
- Actions variable:
HOMEBREW_TAP_REPO=spoke-sh/homebrew-tap - Actions secret:
HOMEBREW_TAP_TOKEN=<token with write access to spoke-sh/homebrew-tap>
The token must be able to clone, commit, and push to the tap repository. A fine-grained token scoped to spoke-sh/homebrew-tap with repository contents write access is sufficient.
Follow these steps to release a new version of keel:
Bump the version number in Cargo.toml. We follow Semantic Versioning.
# Cargo.toml
[workspace.package]
version = "0.2.2" # Update thisCommit the version bump to the main branch.
git add Cargo.toml
git commit -m "chore: bump version to 0.2.2"
git push origin mainCreate a git tag corresponding to the new version (must start with v).
git tag v0.2.2
git push origin v0.2.2Pushing the tag triggers the Release GitHub Action. This workflow will:
- Plan the release using
cargo dist plan. - Build binaries for all supported platforms in parallel.
- Generate supported installers (shell, PowerShell, Homebrew, and
.msi). - Create a GitHub Release and upload all artifacts and checksums.
- Publish
Formula/keel.rbintospoke-sh/homebrew-tapwhenHOMEBREW_TAP_REPOandHOMEBREW_TAP_TOKENare configured.
Once the GitHub Action completes:
- Go to the Releases page.
- Verify that all artifacts (tarballs and installers) are attached.
- Ensure the
sha256.sumfile is present. - If Homebrew publishing was enabled, verify
Formula/keel.rbwas updated inspoke-sh/homebrew-tap.
| Platform | Target Triple | Artifacts |
|---|---|---|
| Linux (x86_64, glibc) | x86_64-unknown-linux-gnu |
.tar.gz, shell installer, .deb, .rpm |
| macOS (Intel) | x86_64-apple-darwin |
.tar.gz, shell installer, Homebrew formula |
| macOS (Apple Silicon) | aarch64-apple-darwin |
.tar.gz, shell installer, Homebrew formula |
| Windows (x86_64) | x86_64-pc-windows-msvc |
.zip, .msi, PowerShell installer |
You can simulate the release plan locally (if cargo-dist is installed):
# See what would be built
cargo dist plan
# Build artifacts locally (outputs to target/dist)
cargo dist build