This document outlines the process to follow when releasing a new version of the project.
-
Decide on a version number for the new release following Semantic Versioning (e.g.,
0.5.0). -
Locally or using the GitHub UI, trigger the
release-prepareworkflow:make release VERSION=0.5.0
or manually trigger the workflow via GitHub Actions UI.
-
This will:
- Create a new branch
release/v0.5.0from the latestdevelopbranch - Update version numbers in all
Cargo.tomlfiles to0.5.0 - Generate a CHANGELOG.md file
- Create a pull request from
release/v0.5.0tomain
- Create a new branch
- Review the generated PR to ensure the changelog and version changes are correct.
- Request reviews from other team members as necessary.
- Make any final adjustments directly to the
release/v0.5.0branch. - Once approved, merge the PR into
main.
When the release PR is merged to main, the release-finalize workflow will automatically:
- Create and push a tag for the release (e.g.,
v0.5.0) - Create a GitHub Release with the changelog content
- Build and publish Docker images for the release
- Create a PR to merge changes back to
develop - Automatically merge this PR into
develop - Automatically bump the version on
developto the next development version (e.g.,0.5.1-dev)
No manual intervention is required for these steps unless there are conflicts when merging back to develop.
For urgent fixes that need to bypass the normal release flow:
- Create a branch
hotfix/v0.5.1frommain - Make your changes and commit them
- Update version numbers in all
Cargo.tomlfiles to0.5.1 - Create a PR from
hotfix/v0.5.1tomain - After the PR is merged, the same automatic finalization steps listed above will occur
We follow Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for backwards-compatible functionality
- PATCH version for backwards-compatible bug fixes
Development versions on the develop branch have a -dev suffix appended to the patch number (e.g., 0.5.1-dev).
The changelog is generated automatically using git-cliff, which parses Conventional Commits to generate a structured changelog.
To ensure your commits appear correctly in the changelog, prefix them with:
feat:for new featuresfix:for bug fixeschore:for maintenance tasksdocs:for documentation updatesrefactor:for code refactoringtest:for adding or updating testsperf:for performance improvements