This document outlines the release process for kurl. The repository utilizes an automated CI/CD pipeline powered by GitHub Actions and GoReleaser.
Our releases are fully automated via GitHub Actions (.github/workflows/release.yml).
Whenever a new semantic version tag (e.g., v1.0.1) is pushed to the repository, the release pipeline is triggered.
The pipeline performs the following tasks:
- Compilation: Compiles highly optimized, stripped binaries for macOS (Intel & Apple Silicon), Linux, and Windows.
- Archiving: Packages the binaries with the
README.mdandLICENSE. - GitHub Release: Creates a draft or published release on the GitHub repository, attaching all compiled artifacts and auto-generating release notes based on the git commit history.
- Homebrew Tap Updates: Automatically commits the new
Formula/kurl.rbto thekavix/homebrew-taprepository so macOS and Linux users can instantly runbrew upgrade kurl.
As a maintainer, follow these steps to release a new version of kurl:
- Update Changelog: Ensure the
CHANGELOG.mdreflects the changes in this upcoming release under the correct version header. - Commit Changes:
git add CHANGELOG.md git commit -m "chore: prepare release v1.0.1" git push origin main - Create a Version Tag:
Create an annotated semantic version tag:
git tag -a v1.0.1 -m "Release v1.0.1" - Push the Tag:
git push origin v1.0.1
Once pushed, navigate to the Actions tab on GitHub to monitor the deployment. When the workflow completes, the release will be live on the Releases page.
If you need to test the compilation or cross-compilation matrix locally before pushing a tag, you can build a snapshot release:
make release-localThis requires goreleaser to be installed on your local machine (brew install goreleaser). It will place the compiled archives in the dist/ directory.