Release Process
Versioning
KafClaw uses semantic versioning (MAJOR.MINOR.PATCH). The version is defined in internal/cli/root.go and can be overridden at build time:
go build -ldflags "-X github.com/KafClaw/KafClaw/internal/cli.version=0.1.0" ./cmd/kafclaw
Make Targets
From the KafClaw source directory:
make release-patch # bumps PATCH, builds, tags, pushes
make release-minor # bumps MINOR, builds, tags, pushes
make release-major # bumps MAJOR, builds, tags, pushes
Each make release* target:
- Bumps the version via
scripts/release.sh - Creates a commit:
Release vX.Y.Z - Tags:
vX.Y.Z - Pushes commit and tag to remote
Release commits are created from the repository root (all staged changes included).
GitHub Actions
- Workflow:
.github/workflows/release.yml - Trigger: tag push
v*, scheduled edge releases, or manualworkflow_dispatch - Scheduled edge releases are skipped when
mainhas not moved since the most recentedge-*tag - Build matrix:
ubuntu-latest,macos-latest,windows-latest - Artifacts attached to GitHub Release via
softprops/action-gh-release@v2
Script
Release bump logic: scripts/release.sh