- Cut a release candidate (RC)
- Test the RC
- Collect signoffs
- Cut the full release
Releases are fully automated once a release PR is merged into main. The branch name controls what CI does:
| Branch name | Result |
|---|---|
release/vX.Y.Z-rcQ |
Creates RC tag, fast-forwards beta, builds and signs artifacts |
release/vX.Y.Z |
Creates release tag, fast-forwards stable, builds and signs artifacts |
No human pushes tags or updates stable/beta directly, the CI handles everything after the PR merges.
- Create a branch named
release/vX.Y.Z-rc1. For the first RC of a new version, bump the version inCargo.tomland runcargo checkto updateCargo.lock. Always updateCHANGELOG.md. - Open a PR targeting
main. Get two approvals and merge. - CI creates the tag, fast-forwards
beta, builds and signs binaries, Docker images, and creates a draft release on GitHub. - Test the RC on testnets. For subsequent RCs (
-rc2, etc.), open a new release PR with only aCHANGELOG.mdupdate (Cargo.tomldoes not change between RCs).
Once testing is complete and signoffs are collected:
- Create a branch named
release/vX.Y.Zand updateCHANGELOG.mdwith final release notes. - Open a PR targeting
main. Get two approvals and merge. - CI creates the tag, fast-forwards
stable, builds and signs artifacts, and creates the release. - Verify the binary was correctly signed.
- Update the community.
CI will automatically delete the tag if any build step fails. stable and beta are only updated after all artifacts are successfully built, they are never touched on a failed run. Fix the issue and open a new release PR.
All binaries are signed using Sigstore cosign. You can verify any binary was built by the official Commit-Boost CI pipeline from this release's commit.
Install cosign: https://docs.sigstore.dev/cosign/system_config/installation/
# Set the release version and your target architecture
# Architecture options: darwin_arm64, linux_arm64, linux_x86-64
export VERSION=vX.Y.Z
export ARCH=linux_x86-64
# Download the binary tarball and its signature
curl -L \
-o "commit-boost-$VERSION-$ARCH.tar.gz" \
"https://github.com/Commit-Boost/commit-boost-client/releases/download/$VERSION/commit-boost-$VERSION-$ARCH.tar.gz"
curl -L \
-o "commit-boost-$VERSION-$ARCH.tar.gz.sigstore.json" \
"https://github.com/Commit-Boost/commit-boost-client/releases/download/$VERSION/commit-boost-$VERSION-$ARCH.tar.gz.sigstore.json"
# Verify the binary was signed by the official CI pipeline
cosign verify-blob \
"commit-boost-$VERSION-$ARCH.tar.gz" \
--bundle "commit-boost-$VERSION-$ARCH.tar.gz.sigstore.json" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
--certificate-identity="https://github.com/Commit-Boost/commit-boost-client/.github/workflows/release.yml@refs/tags/$VERSION"A successful verification prints Verified OK. If the binary was modified after being built by CI, this command will fail.
The .sigstore.json bundle for each binary is attached to this release alongside the binary itself.