Releasing
This repository uses semantic-release with the Angular commit convention to automate versioning and release notes.
How It Works
- Commits on
mainare analyzed by@semantic-release/commit-analyzer - Version is determined by commit type (
feat:= minor,fix:= patch) - Release notes are generated from commit messages
- A GitHub release is created with those notes
- A Git tag is pushed in
v${version}format
Release Process
Using go-task:
task release
This runs:
- Pre-commit checks
- Creates/updates a PR
npx semantic-release --dry-runto preview the versionnpx semantic-release --debug --no-cito publish
Manual Release
npx semantic-release --dry-run # Preview
npx semantic-release --debug --no-ci # Publish
Commit Message Format
type: subject
body (optional)
footer (optional)
| Type | Version Bump | Example |
|---|---|---|
feat |
Minor (0.x.0) | feat: add prometheus component |
fix |
Patch (0.0.x) | fix: correct cilium L2 announcement variable |
chore |
None | chore: update renovate config |
docs |
None | docs: add vault README |
refactor |
None | refactor: simplify cert-manager kustomization |
For a major version bump, add BREAKING CHANGE: in the commit footer.
Configuration
Defined in .releaserc:
- Branch:
main - Tag format:
v${version} - Plugins: commit-analyzer, release-notes-generator, changelog, github, git
Pre-commit Hooks
Run before pushing:
pre-commit run --all-files
Active checks: trailing whitespace, end-of-file-fixer, large files, merge conflicts, symlinks, private key detection, shellcheck, hadolint, GitHub Actions schema validation, and high-entropy secret detection.
Dependency Management
Renovate is configured (renovate.json) with Flux-specific YAML file matching to automatically propose version updates for Helm charts and OCI artifacts.