This is a quick reference for maintainers creating releases of the Chop project.
# 1. Ensure you're on main with latest changes
git checkout main
git pull origin main
# 2. Create and push a version tag
git tag -a v0.1.0 -m "Release v0.1.0: Initial public release"
git push origin v0.1.0
# 3. Watch the release workflow
# Visit: https://github.com/evmts/chop/actions
# 4. Release is live!
# Visit: https://github.com/evmts/chop/releasesThat's it! GitHub Actions will automatically:
- Run all tests
- Build binaries for Linux, macOS, Windows (amd64 + arm64)
- Generate checksums
- Create a GitHub Release with release notes
- Upload all artifacts
Before creating a release tag, verify:
- All tests pass:
go test ./... - Binary builds:
CGO_ENABLED=0 go build -o chop . - Documentation is up to date (README.md)
- Commit messages follow conventional format (for good release notes)
- No uncommitted changes:
git status
Follow Semantic Versioning:
- v1.0.0 - Major: Breaking changes, incompatible API changes
- v0.1.0 - Minor: New features, backwards-compatible
- v0.0.1 - Patch: Bug fixes, backwards-compatible
# Feature release
git tag -a v0.1.0 -m "Release v0.1.0: Add interactive TUI and state persistence"
# Bug fix release
git tag -a v0.1.1 -m "Release v0.1.1: Fix clipboard support on Linux"
# Major release
git tag -a v1.0.0 -m "Release v1.0.0: First stable release with full EVM support"Test the release process locally without publishing:
# Install goreleaser (if not already installed)
brew install goreleaser
# Run in snapshot mode (doesn't publish)
goreleaser release --snapshot --clean
# Check the built artifacts
ls -la dist/
# Test the binary
./dist/chop_darwin_amd64_v1/chop --versionEach release includes binaries for:
| Platform | Architecture | Binary Name |
|---|---|---|
| Linux | amd64 | chop_VERSION_linux_amd64.tar.gz |
| Linux | arm64 | chop_VERSION_linux_arm64.tar.gz |
| macOS | amd64 (Intel) | chop_VERSION_darwin_amd64.tar.gz |
| macOS | arm64 (Apple Silicon) | chop_VERSION_darwin_arm64.tar.gz |
| Windows | amd64 | chop_VERSION_windows_amd64.zip |
| Windows | arm64 | chop_VERSION_windows_arm64.zip |
Plus a checksums.txt file with SHA256 checksums for verification.
- Fix the tests before releasing
- CI will block the release if tests fail
- Check that
CGO_ENABLED=0 go build -o chop .works locally - Verify all dependencies are in
go.mod
- Check the Actions tab
- View the workflow logs for error details
- Common issues:
.goreleaser.ymlsyntax error: Rungoreleaser check- Missing files referenced in config
- GitHub token permissions issue
# Delete the GitHub release (via web UI or gh CLI)
gh release delete v0.1.0
# Delete the local tag
git tag -d v0.1.0
# Delete the remote tag
git push --delete origin v0.1.0
# Now you can create the tag again- Verify the release - Check the Releases page
- Test a download - Download a binary and verify it works
- Update documentation - If needed, update installation instructions
- Announce - Share the release on social media, Discord, etc.
- Full CI/CD documentation: See
.github/CICD.md - GoReleaser docs: https://goreleaser.com/
- GitHub Actions docs: https://docs.github.com/en/actions
# View recent tags
git tag -l | tail -5
# View tag details
git show v0.1.0
# List releases (requires gh CLI)
gh release list
# View release details
gh release view v0.1.0