This document describes how to create and manage releases for kalco.
Kalco uses an automated release system powered by:
- GitHub Actions - Automated CI/CD pipeline
- GoReleaser - Cross-platform builds and release management
- Package Managers - Automatic publishing to Homebrew, APT, RPM, etc.
./scripts/create-release.shThis interactive script will:
- Check your git status
- Suggest version numbers based on semantic versioning
- Allow you to enter release notes
- Create and push the git tag
- Trigger the automated build process
-
Ensure your code is ready:
git status # Should be clean go test ./... # All tests should pass go build # Should build successfully
-
Create a git tag:
git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0 -
GitHub Actions will automatically:
- Build binaries for all supported platforms
- Create checksums
- Generate a GitHub release
- Upload all artifacts
The release process creates:
- Linux: amd64, arm64 (tar.gz)
- macOS: amd64, arm64 (tar.gz)
- Windows: amd64 (zip)
- Debian/Ubuntu: .deb packages
- RHEL/CentOS/Fedora: .rpm packages
- Arch Linux: .pkg.tar.xz packages
- Alpine: .apk packages
- Homebrew: Formula (if tap is configured)
- Checksums file for verification
- Source code archives
- Release notes
After a release is published, users can install kalco using:
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/graz-dev/kalco/master/scripts/install.sh | bash
# Windows PowerShell
iwr -useb https://raw.githubusercontent.com/graz-dev/kalco/master/scripts/install.ps1 | iex# Homebrew
brew install graz-dev/tap/kalco
# Debian/Ubuntu
wget https://github.com/graz-dev/kalco/releases/latest/download/kalco_Linux_x86_64.deb
sudo dpkg -i kalco_Linux_x86_64.deb
# RHEL/CentOS/Fedora
wget https://github.com/graz-dev/kalco/releases/latest/download/kalco_Linux_x86_64.rpm
sudo rpm -i kalco_Linux_x86_64.rpmUsers can download binaries directly from the releases page.
We follow Semantic Versioning:
- MAJOR version (v2.0.0): Incompatible API changes
- MINOR version (v1.1.0): New functionality in a backwards compatible manner
- PATCH version (v1.0.1): Backwards compatible bug fixes
For pre-release versions, append a suffix:
v1.0.0-alpha.1- Alpha releasev1.0.0-beta.1- Beta releasev1.0.0-rc.1- Release candidate
- Check the GitHub Actions page
- Look for error messages in the workflow logs
- Common issues:
- Missing
GITHUB_TOKENpermissions - Invalid GoReleaser configuration
- Build failures on specific platforms
- Missing
If certain package formats aren't being generated:
- Check the
.goreleaser.ymlconfiguration - Ensure the
nfpmssection includes the desired formats - Verify the GitHub Actions workflow has the necessary permissions
If Homebrew publishing fails:
- Ensure you have a separate repository for your Homebrew tap
- Update the
brewssection in.goreleaser.ymlwith correct repository details - Make sure the bot has write access to the tap repository
.github/workflows/release.yml- GitHub Actions workflow.goreleaser.yml- GoReleaser configurationscripts/install.sh- Linux/macOS installation scriptscripts/install.ps1- Windows installation script
- All releases are signed with checksums
- Installation scripts verify checksums before installation
- Use HTTPS for all downloads
- GitHub Actions uses secure tokens for publishing