mirror of
https://github.com/coollabsio/coolify-cli.git
synced 2026-06-19 07:35:04 +00:00
bc36a44f2c
Document the GoReleaser-managed Homebrew tap, update verification steps to be non-destructive, and tighten the post-release checklist.
5.5 KiB
5.5 KiB
How to Release Coolify CLI
This guide explains the release process for the Coolify CLI.
Prerequisites
- Write access to the
coollabsio/coolify-clirepository - All changes merged to the target branch (
v4.x) - All tests passing (
go test ./internal/...)
Release Process
1. Create a GitHub Release
- Go to https://github.com/coollabsio/coolify-cli/releases/new
- Click "Choose a tag" and create a new tag:
- Tag name:
v1.x.x(must start withv, e.g.,v1.2.3) - Target:
v4.x(or your target branch)
- Tag name:
- Release title:
v1.x.x(same as tag name) - Description: Write release notes describing:
- New features
- Bug fixes
- Breaking changes (if any)
- Example:
## What's New - Added support for database management - Improved error messages for API failures ## Bug Fixes - Fixed panic when config file is missing ## Breaking Changes - None
- Click "Publish release"
2. Automated Build Process
Once you publish the release:
- GitHub Actions automatically triggers the
release-cli.ymlworkflow - GoReleaser builds binaries for:
- Linux: amd64, arm64
- macOS (Darwin): amd64, arm64
- Windows: amd64, arm64
- Goreleaser injects the version from the tag into the binaries via ldflags (into
internal/version.version) - Binaries are automatically uploaded to the release
- A follow-up
update-versionjob then:- Updates the
versionconstant ininternal/version/checker.goto the new tag - Commits the bump to
v4.xaschore: bump version to vX.Y.Z - Force-moves the release tag to point at that new commit
- Updates the
- GoReleaser also publishes a Homebrew formula to the tap at
coollabsio/homebrew-coolify-cli(underFormula/coolify-cli.rb), using theHOMEBREW_TAP_GITHUB_TOKENsecret - The release becomes available at:
- GitHub:
https://github.com/coollabsio/coolify-cli/releases/tag/v1.x.x - Install script:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash - Homebrew:
brew install coollabsio/coolify-cli/coolify-cli go install:go install github.com/coollabsio/coolify-cli/coolify@v1.x.x
- GitHub:
3. Verify the Release
After the workflow completes (usually 2-5 minutes), verify without touching your local install:
- Check the release page has all platform binaries (Linux/macOS/Windows × amd64/arm64)
- Confirm the
update-versionjob committed the bump onv4.x(look forchore: bump version to vX.Y.Z) and that the tag now points at that commit - Confirm
internal/version/checker.goonv4.xhas the new version - Confirm the Homebrew tap has a new
Formula/coolify-cli.rbcommit for this version at https://github.com/coollabsio/homebrew-coolify-cli
Troubleshooting
Build Failed
- Check the GitHub Actions logs at https://github.com/coollabsio/coolify-cli/actions
- Common issues:
- Syntax errors in Go code
- Test failures
- GoReleaser configuration issues
Version Not Updating
- The version is injected at build time via ldflags into
internal/version.version— you do not need to edit it manually before releasing. The post-releaseupdate-versionjob also rewritesinternal/version/checker.goonv4.x. - If the hardcoded fallback in
internal/version/checker.gois stale, check that theupdate-versionjob ran successfully after the release. - The tag must start with
v(e.g.,v1.2.3, not1.2.3) - Check that the workflow has write permissions (
contents: writeinrelease-cli.yml)
Install Script Not Finding New Version
- Wait a few minutes for GitHub's CDN to update
- Check that binaries were uploaded to the release
- Verify the tag format is correct (
v1.x.x)
Release Checklist
Before creating a release:
- All tests pass:
go test ./internal/... - Code is formatted:
go fmt ./... - Changes merged to
v4.xbranch - Release notes prepared
Note: You do not need to bump the version manually. GoReleaser injects the tag version via ldflags, and the
update-versionCI job commits the bump tointernal/version/checker.goafter the release.
After creating a release:
- GitHub Actions workflow completed successfully (both
release-cliandupdate-versionjobs) - All platform binaries are present on the release page
internal/version/checker.goonv4.xshows the new version- Homebrew tap has a fresh
Formula/coolify-cli.rbcommit
Configuration Files
The release process uses these configuration files:
.goreleaser.yml- GoReleaser configuration (build matrix, archives, Homebrew tap) - entry point is./coolify/main.go.github/workflows/release-cli.yml- GitHub Actions workflowscripts/install.sh- User-facing install scriptinternal/version/checker.go- ContainsGetVersion()function that returns the current versioncoolify/main.go- Binary entry point forgo installsupportcoollabsio/homebrew-coolify-cli- External Homebrew tap updated automatically on each release
Notes
- The CLI has auto-update checking built-in (checks every 10 minutes)
- Users can manually update with
coolify update - Install script supports version pinning:
bash install.sh v1.2.3 - Homebrew users can install via
brew install coollabsio/coolify-cli/coolify-cli(the tap at https://github.com/coollabsio/homebrew-coolify-cli is auto-updated by GoReleaser) - Releases are immutable - if you need to fix something, create a new patch version