This document describes the process for releasing new versions of the DK CLI.
Before creating a release, ensure:
-
GitHub Secrets are configured (one-time setup):
HOMEBREW_TAP_TOKEN- Personal Access Token withreposcope for Infoblox-CTO/homebrew-tapSCOOP_BUCKET_TOKEN- Personal Access Token withreposcope for Infoblox-CTO/scoop-bucket
-
External repositories exist (one-time setup):
- Infoblox-CTO/homebrew-tap - Homebrew tap with
Formula/directory - Infoblox-CTO/scoop-bucket - Scoop bucket repository
- Infoblox-CTO/homebrew-tap - Homebrew tap with
-
All tests pass:
make test -
GoReleaser configuration is valid:
make release-local
Ensure your main branch is up to date:
git checkout main
git pull origin mainUse Semantic Versioning:
- MAJOR: Breaking changes
- MINOR: New features, backward compatible
- PATCH: Bug fixes, backward compatible
# Create an annotated tag
git tag -a v1.2.3 -m "Release v1.2.3"
# Push the tag to trigger the release workflow
git push origin v1.2.3- Go to GitHub Actions
- Watch the "Release" workflow
- Release builds typically complete in 5-10 minutes
After the workflow completes:
-
Check GitHub Releases for the new version
-
Verify all artifacts are present:
dk_X.Y.Z_darwin_amd64.tar.gzdk_X.Y.Z_darwin_arm64.tar.gzdk_X.Y.Z_linux_amd64.tar.gzdk_X.Y.Z_windows_amd64.zipchecksums.txt
-
Verify the Homebrew formula was updated in homebrew-tap
-
Verify the Scoop manifest was updated in scoop-bucket
# Update tap and upgrade
brew update
brew upgrade dk
# Or install fresh
brew install Infoblox-CTO/tap/dk
# Verify
dk version# Set token for private repo access
export GITHUB_TOKEN=your_token
# Run install script
curl -sSfL https://raw.githubusercontent.com/Infoblox-CTO/platform.data.kit/main/scripts/install.sh | sh
# Verify
dk version# Update and install
scoop update dk
# Or install fresh
scoop bucket add infoblox https://github.com/Infoblox-CTO/scoop-bucket
scoop install dk
# Verify
dk version- Missing secrets: Ensure
HOMEBREW_TAP_TOKENandSCOOP_BUCKET_TOKENare configured in repository settings - Invalid token permissions: PATs need
reposcope for the respective repositories - GoReleaser config error: Run
make release-localto validate locally
- Check the
HOMEBREW_TAP_TOKENsecret has write access to homebrew-tap - Verify the token hasn't expired
- Check the homebrew-tap repository exists and has a
Formula/directory
- Check the
SCOOP_BUCKET_TOKENsecret has write access to scoop-bucket - Verify the token hasn't expired
- Check the scoop-bucket repository exists
For pre-release versions (alpha, beta, rc), use appropriate version suffixes:
git tag -a v1.0.0-alpha.1 -m "Release v1.0.0-alpha.1"
git tag -a v1.0.0-beta.1 -m "Release v1.0.0-beta.1"
git tag -a v1.0.0-rc.1 -m "Release v1.0.0-rc.1"GoReleaser automatically marks these as pre-releases on GitHub.
To test the release process locally without publishing:
# Validate GoReleaser configuration
goreleaser check
# Build all binaries locally (snapshot mode)
make release-local
# Binaries are created in dist/
ls -la dist/