Collette releases are cut manually from the main branch.
The release workflow updates the crate version in Cargo.toml and Cargo.lock
to the next version computed from Conventional Commits since the latest v*
tag:
fix:andperf:bump the patch version.feat:bumps the minor version.!markers andBREAKING CHANGE:footers mark a breaking release.
For the first release, when no previous v* tag exists, the workflow releases
the current Cargo.toml version.
If there are no releasable commits since the latest tag, the workflow fails without creating a release.
While the crate is on 0.x, breaking changes are expected to bump the minor
version by default. Change RELEASE_PRE_1_0_BREAKING_AS in the release workflow
to major if that policy changes.
The workflow asks GitHub to generate release notes from merged pull requests,
cleans the generated body, and prepends the result to CHANGELOG.md.
The same cleaned notes are used as the GitHub Release body.
Pull request title emojis are preserved in the generated changelog and can be used as lightweight visual categories.
Release note sections are grouped with ordinary pull request labels:
breaking-changeenhancementbugsecuritydocumentationdependenciesci
These labels do not control the released version. The version is computed from Conventional Commits.
- Run the
Releaseworkflow manually. - The workflow runs the existing build, test, lint, and audit workflows.
- Keep
dry_runenabled first to validate the computed release. - Run it again with
dry_rundisabled.
The workflow commits Cargo.toml, Cargo.lock, and CHANGELOG.md back to
main, creates a vX.Y.Z tag, pushes the tag, and creates the GitHub Release.
The pushed tag triggers the Publish workflow. That workflow checks that the
tag version matches Cargo.toml, then publishes the crate to crates.io.