| doc_type | how-to |
|---|---|
| title | Release Process |
| audience | maintainers |
Purpose: For maintainers, shows how to create and publish releases of openCenter-cli.
Before creating a release, you need:
- Maintainer access to the repository
- Git configured with commit signing
- GitHub CLI (
gh) installed (optional but recommended) - All tests passing on main branch
openCenter-cli follows Semantic Versioning:
- Major (v2.0.0) - Breaking changes
- Minor (v1.1.0) - New features, backward compatible
- Patch (v1.0.1) - Bug fixes, backward compatible
- Pre-release (v1.0.0-rc1) - Release candidates
- Major releases - As needed for breaking changes
- Minor releases - Monthly or when features are ready
- Patch releases - As needed for critical bugs
- Pre-releases - Before major/minor releases for testing
Move unreleased changes to new version section:
## [1.2.0] - 2026-02-17
### Added
- AWS provider support with EC2 provisioning
- Multi-cluster management commands
- Shell integration for active cluster display
### Changed
- Improved validation error messages
- Updated default Kubernetes version to 1.33.5
### Fixed
- VRRP validation logic for OpenStack
- Template rendering for VMware provider
### Security
- Updated dependencies with security patches
## [Unreleased]
### Added
- (empty for next release)Update version references in:
README.md- Installation instructionsdocs/tutorials/getting-started.md- Version examplesdocs/reference/default-values.md- Default versions
# Build
mise run build
# Run all tests
mise run test
mise run godog
# Schema verification
mise run schema-verify
# Security tests
mise run test-security
# Integration tests
mise run test-integrationAll tests must pass before proceeding.
The GitHub Actions release workflow is the source of truth for published artifacts.
Pushing the tag also runs the container image workflow, which publishes the
multi-architecture CLI image to ghcr.io/opencenter-cloud/opencenter-cli.
git tag -a v1.2.0 -m "Release 1.2.0"
git push origin v1.2.0The tag-triggered workflow builds the supported Linux and macOS binaries, generates
checksums.txt, signs the release assets with cosign keyless signing, emits an SBOM,
and creates the GitHub release automatically.
Use GitHub Actions or the GitHub CLI to monitor the run:
gh run list --workflow release.yml
gh run watchVerify the GitHub release contains:
- the four platform binaries
checksums.txt- cosign signature and certificate files
opencenter.spdx.json
Verify the GitHub Container Registry package contains:
ghcr.io/opencenter-cloud/opencenter-cli:1.2.0ghcr.io/opencenter-cloud/opencenter-cli:1.2- the corresponding
sha-*tag
mise run release <version> remains available for local preflight builds and manual
artifact inspection, but it is no longer the publishing mechanism for official releases.
# Download binary
curl -L https://github.com/opencenter-cloud/openCenter-cli/releases/download/v1.2.0/opencenter-1.2.0-linux-amd64 -o opencenter
# Make executable
chmod +x opencenter
# Test
./opencenter version
./opencenter cluster init test --org test-orgVerify on GitHub:
- Release appears in releases list
- All binaries are attached
- Release notes are correct
- Installation instructions work
Update installation instructions:
## Installation
Download the latest release:
**Linux (x86_64)**
```bash
curl -L https://github.com/opencenter-cloud/openCenter-cli/releases/download/v1.2.0/opencenter-1.2.0-linux-amd64 -o opencenter
chmod +x opencenter
sudo mv opencenter /usr/local/bin/macOS (Apple Silicon)
curl -L https://github.com/opencenter-cloud/openCenter-cli/releases/download/v1.2.0/opencenter-1.2.0-darwin-arm64 -o opencenter
chmod +x opencenter
sudo mv opencenter /usr/local/bin/
### Announce Release
Announce in:
- GitHub Discussions
- Team Slack/chat
- Project mailing list
- Release notes blog post (if applicable)
## Release Checklist
Before releasing, verify:
- [ ] All tests pass (`mise run test && mise run godog`)
- [ ] CHANGELOG.md updated with release notes
- [ ] Version documentation updated
- [ ] Release binaries built (`mise run release v1.2.0`)
- [ ] Release notes generated (`mise run publish 1.2.0`)
- [ ] Binaries tested on target platforms
- [ ] Git tag created and pushed
- [ ] GitHub release created with binaries
- [ ] GHCR image published for the release tag
- [ ] Release verified by downloading and testing
- [ ] Documentation updated with new version
- [ ] Release announced to team
## Hotfix Releases
For critical bugs in production:
1. Create hotfix branch from release tag:
```bash
git checkout -b hotfix/1.2.1 v1.2.0
-
Fix bug and commit:
git commit -m "fix: critical bug in validation" -
Update CHANGELOG.md:
## [1.2.1] - 2026-02-18 ### Fixed - Critical bug in validation logic
-
Build and release:
mise run release v1.2.1 mise run publish 1.2.1 git tag -a v1.2.1 -m "Hotfix 1.2.1" git push origin v1.2.1 gh release create v1.2.1 --notes-file bin/release/RELEASE_NOTES_1.2.1.md bin/release/opencenter-*
-
Merge hotfix back to main:
git checkout main git merge hotfix/1.2.1 git push origin main
Before major/minor releases, create release candidate:
# Build RC
mise run release v1.2.0-rc1
# Create pre-release
gh release create v1.2.0-rc1 \
--prerelease \
--notes "Release candidate for 1.2.0. Please test and report issues." \
bin/release/opencenter-*Test for 1-2 weeks before final release.
If a release has critical issues:
- Mark release as pre-release on GitHub
- Add warning to release notes
- Create hotfix release
- Update documentation to point to previous stable version
Problem: go.mod version doesn't match build
Solution:
# Update go.mod
go mod tidy
# Rebuild
mise run buildProblem: Git tag already exists
Solution:
# Delete local tag
git tag -d v1.2.0
# Delete remote tag
git push origin :refs/tags/v1.2.0
# Recreate tag
git tag -a v1.2.0 -m "Release 1.2.0"
git push origin v1.2.0Problem: Some commits not in release notes
Solution:
# Manually generate changelog
git log v1.1.0..v1.2.0 --oneline --no-merges
# Edit release notes
vim bin/release/RELEASE_NOTES_1.2.0.mdProblem: Binary fails with "exec format error"
Solution:
# Verify GOOS/GOARCH
file bin/release/opencenter-1.2.0-linux-amd64
# Rebuild with correct platform
GOOS=linux GOARCH=amd64 go build -o bin/release/opencenter-1.2.0-linux-amd64This documentation is based on the following repository files:
- Release task:
.mise.toml:127-223(release task) - Publish task:
.mise.toml:225-326(publish task) - Version injection:
.mise.toml:23-47(build task with ldflags) - Version management:
.kiro/steering/tech.md:143-149 - Build system:
.mise.toml:1-961 - Contributing guide:
CONTRIBUTING.md:1-82