Releasing
BoatmanMode uses automatic versioning. Releases are created automatically when you push to main.
How Automatic Versioning Works
When you push to main, the auto-version workflow:
- Reads your latest commit message
- Determines the version bump type:
breaking:ormajor:→ Major version bump (v2.0.0)feat:orfeature:orminor:→ Minor version bump (v1.1.0)- Everything else → Patch version bump (v1.0.1)
- Creates and pushes a new git tag
- The tag triggers the release workflow
- Binaries are built and released automatically
Examples
# Patch bump → v1.0.1
git commit -m "fix: correct error handling in executor"
git push origin main
# Minor bump → v1.1.0
git commit -m "feat: add support for file-based prompts"
git push origin main
# Major bump → v2.0.0
git commit -m "breaking: change public API interface"
git push origin mainWhat Gets Released
For each version tag, GitHub Actions will:
- Run tests to ensure everything passes
- Build binaries for multiple platforms
- Create SHA256 checksums
- Generate a changelog from commit messages
- Create a GitHub release with all artifacts
Built Platforms
| OS | Architecture |
|---|---|
| Linux | amd64, arm64 |
| macOS (Darwin) | amd64 (Intel), arm64 (Apple Silicon) |
| Windows | amd64 |
Automatic Release (Recommended)
Simply push to main:
git add .
git commit -m "feat: add new feature"
git push origin mainThe workflow handles everything automatically.
Manual Release
If you prefer manual control:
VERSION="v1.0.0"
git tag -a $VERSION -m "Release $VERSION"
git push origin $VERSIONPre-releases
git tag -a v1.0.0-beta.1 -m "Beta release v1.0.0-beta.1"
git push origin v1.0.0-beta.1GoReleaser marks releases containing -alpha, -beta, or -rc as pre-releases.
Changelog Generation
Changelogs are auto-generated using Conventional Commits (opens in a new tab):
| Prefix | Changelog Section |
|---|---|
feat: | New Features |
fix: | Bug Fixes |
perf: | Performance Improvements |
refactor: | Refactors |
| Other | Other Changes |
Skipping CI
To push without creating a release:
git commit -m "docs: update README [skip ci]"Testing Locally
# Install GoReleaser
brew install goreleaser/tap/goreleaser
# Dry run (doesn't publish)
goreleaser release --snapshot --clean
# Check output
ls -lh dist/Deploy Documentation
The documentation site (docs/) is hosted on Vercel. After any release that includes documentation changes, deploy the updated site:
# Production deploy
cd docs
npm install
npx vercel --prodFor preview deployments (e.g., before merging a docs PR):
cd docs
npx vercelThe Vercel project is already linked via docs/.vercel/project.json. If prompted, use the existing project settings.
Configuration Files
| File | Purpose |
|---|---|
.github/workflows/auto-version.yml | Auto-version workflow |
.github/workflows/release.yml | Release build workflow |
.github/workflows/test.yml | Test workflow |
.goreleaser.yml | GoReleaser configuration |
cmd/boatman/main.go | Version variable definitions |
internal/cli/version.go | Version command implementation |
docs/.vercel/project.json | Vercel project configuration |