Release Runbook
Use this when cutting a newgitquarry release.
Goal
Ship one version across GitHub release assets, npm, downstream packaging repos, the AUR, public documentation, and crates.io when registry credentials are configured.Preflight
- Merge the approved work into
main. - Make sure
mainis green before tagging. - Pick the release version
X.Y.Z. - Confirm release automation credentials are present:
CARGO_REGISTRY_TOKENGitHub Actions secret for crates.io publishingGITQUARRY_TOKENGitHub Actions secret for live smoke checks
- Confirm
CHANGELOG.mdincludes the user-facing notes for the release. - Be ready to update downstream packaging repos after the GitHub release completes:
Microck/homebrew-gitquarryMicrock/scoop-gitquarry
- Confirm npm publish access if you want the release workflow to publish the Node wrapper automatically:
NPM_TOKENGitHub Actions secret
- Confirm AUR SSH access for
aur@aur.archlinux.orgif you plan to publish the Arch package immediately after the release.
Update release metadata
- Bump the release version in:
Cargo.tomlCargo.lock
- Prefer moving the notes from
## Unreleasedinto a release-specific## [X.Y.Z]section for versioned history. - If you intentionally leave the notes under
## Unreleased, the workflow will use that section as a fallback release summary. - Check for hardcoded version references in docs or examples.
- Commit the release metadata update on
main.
Local verification before tagging
Run the same checks the release pipeline depends on:Publish the release
- Push
main. - Create and push the release tag:
What the tag triggers
.github/workflows/release.yml runs on v* tags and:
- verifies tag-version alignment
- runs format, clippy, tests, and package checks
- publishes the crate to crates.io when
CARGO_REGISTRY_TOKENis configured - builds release artifacts for:
x86_64-unknown-linux-gnuaarch64-unknown-linux-gnux86_64-apple-darwinaarch64-apple-darwinx86_64-pc-windows-msvc
- uploads both packaged archives and raw per-target binaries for wrapper installs
- creates a source tarball for packaging workflows
- generates
SHA256SUMS - creates the GitHub release and uploads the packaged artifacts
- publishes the npm wrapper when
NPM_TOKENis configured
Post-tag checks
Verify all public release surfaces after the workflows finish:- GitHub Release
gh release view vX.Y.Z -R Microck/gitquarry- confirm the release includes the per-target archives, the source tarball, and
SHA256SUMS
- Release workflow health
gh run list --workflow Release -R Microck/gitquarry --limit 5
- Downstream packaging repos
- update
Microck/homebrew-gitquarry/Formula/gitquarry.rbto the new version and hashes - update
Microck/scoop-gitquarry/bucket/gitquarry.jsonto the new version and Windows hash - push both repos and verify the install commands still work conceptually:
- update
- Repo-native packaging files
- update
packaging/homebrew/gitquarry.rb - update
packaging/scoop/gitquarry.json - update
packaging/aur/PKGBUILDandpackaging/aur/.SRCINFO
- update
- npm
npm view gitquarry version dist.tarball- confirm the published version matches
X.Y.Z
- AUR
- push the updated
PKGBUILDand.SRCINFOtossh://aur@aur.archlinux.org/gitquarry.git - verify
https://aur.archlinux.org/packages/gitquarry/reflects the new version
- push the updated
- crates.io
cargo search gitquarry --limit 1- confirm the published version matches
X.Y.ZwhenCARGO_REGISTRY_TOKENwas configured for the release
- Docs
- confirm Mintlify is still pointing at the expected branch and that install instructions still match the published release
Release channel notes
GitHub Releases
This is the canonical binary distribution channel for platform archives.Homebrew
This lives inMicrock/homebrew-gitquarry and should always track the latest published GitHub release hashes for macOS and Linux.
Scoop
This lives inMicrock/scoop-gitquarry and should always track the latest published Windows release asset and hash.
npm
This is thegitquarry package on npm. It is a Node wrapper that downloads the matching raw binary from GitHub Releases on install, which also makes the package usable through pnpm and bun.
AUR
The AUR package lives atgitquarry and is pushed over SSH to aur@aur.archlinux.org. It builds from the GitHub release source tarball instead of shipping a prebuilt binary.
Repo-native packaging files
The main repo also carries release-aligned packaging files underpackaging/ for Homebrew, Scoop, and AUR workflows. They should be kept in sync with the public release even if an external registry has not been updated yet.
crates.io
This is the Rust package distribution channel whenCARGO_REGISTRY_TOKEN is configured. cargo install gitquarry depends on the crates.io version being in sync with the GitHub tag.
Mintlify
Mintlify docs are source-controlled in this repo. There is no version-specific docs publish step in the workflow, so any docs changes should already be merged before the release tag is pushed.Recovery paths
Tag exists but the workflow failed
- Inspect the failed run:
- Fix the underlying issue on
main. - Decide whether to:
- delete and recreate the tag before any public publish happened, or
- cut a new patch version if the release already escaped externally
GitHub release exists but crates.io publish failed
- Verify
CARGO_REGISTRY_TOKENis configured. - Re-run the publish step manually from a trusted local environment:
- Confirm crates.io shows the new version before announcing the release.
crates.io is published but GitHub assets are wrong
- Rebuild the release artifacts from the matching tag.
- Replace the GitHub release assets.
- Do not republish the crate with the same version.
GitHub release is good but downstream package repos drifted
- Download
SHA256SUMSfrom the GitHub release. - Update
Microck/homebrew-gitquarryandMicrock/scoop-gitquarryto the matching version and hashes. - Publish the matching npm wrapper version if it did not publish automatically.
- Push the matching
PKGBUILDand.SRCINFOto the AUR repo. - Update the repo-native files under
packaging/. - Verify docs still point at live channels only.
Quick checks
gh release view vX.Y.Z -R Microck/gitquarrygh run list --workflow Release -R Microck/gitquarry --limit 5gh release download vX.Y.Z -R Microck/gitquarry -p SHA256SUMSnpm view gitquarry version dist.tarballcurl -L -s 'https://aur.archlinux.org/rpc/?v=5&type=search&arg=gitquarry'cargo search gitquarry --limit 1