Release ACR
Create a new version tag and trigger the release workflow.
Prerequisites
Before starting, ensure we're on the default branch and up to date:
git checkout main && git pull
If there are uncommitted changes, stop and ask the user what to do.
Steps
- •
Find the latest version tag:
bashgit describe --tags --abbrev=0
- •
List all commits since that tag:
bashgit log <tag>..HEAD --oneline
If there are no commits since the last tag, inform the user and stop.
- •
Propose a version number following semver by analyzing the changes:
- •MAJOR: breaking changes
- •MINOR: new features, backward compatible
- •PATCH: bug fixes, minor improvements
- •
Present the proposed version and changelog summary to the user. Ask for approval, offering:
- •The proposed version
- •Alternative bumps (major/minor/patch from current)
- •Custom input option
- •
Once approved, create an annotated tag with the changelog summary:
bashgit tag -a <version> --cleanup=whitespace -m "<summary of changes>"
Important: The
--cleanup=whitespaceflag is required to preserve markdown headers (lines starting with#) in the tag message. Without it, git strips them as comments. - •
Push the tag to trigger the release workflow:
bashgit push origin <version>
This triggers
.github/workflows/release.ymlwhich builds binaries for Linux/macOS (amd64/arm64), creates GitHub releases, and updates the Homebrew tap. - •
Regenerate CHANGELOG.md and commit via PR:
Create a branch, regenerate, and open a PR:
bashgit checkout -b docs/changelog-<version>
bash{ echo "# Changelog" echo "" echo "All notable changes to ACR are documented in this file." echo "" echo "This changelog is generated from git tag annotations." echo "" git for-each-ref --sort=-v:refname --format='## [%(refname:short)] - %(creatordate:short) %(contents)' refs/tags } > CHANGELOG.mdReview the generated CHANGELOG.md for formatting, then commit, push, and create a PR:
bashgit add CHANGELOG.md git commit -m "docs: update CHANGELOG.md for <version>" git push origin docs/changelog-<version> gh pr create --title "docs: update CHANGELOG.md for <version>" --body "Regenerated CHANGELOG.md from tag annotations after <version> release."
Then return to main:
bashgit checkout main
Important
- •Always wait for user approval before creating the tag
- •The tag message should summarize the changes since the previous version
- •Use conventional commit style for the tag message (list features, fixes, etc.)
- •The CHANGELOG.md is regenerated from tags after each release — it reflects released versions only
- •Never push directly to main — always use a PR for the changelog update