Introduction
No more manual releases
Releasing Rust packages is tedious and error-prone, just like most IT manual tasks. For every package you want to release, you need to:
- Increase the version in
Cargo.toml
. - Update the changelog.
- Publish the package in the cargo registry (for example, crates.io).
- Create and push a git tag.
Meet release-plz, a Rust open-source project that automates these tasks, allowing developers to release Rust packages without the command line.
Release-plz creates a fully automated release pipeline, allowing you to easily release changes more frequently, without the fear of doing typos or other subtle manual mistakes you can make when releasing from your terminal.
Here's an example of a release Pull Request created on the release-plz repository itself:
Release-plz features
- Version update based on conventional commits.
- Changelog update with git-cliff, using the keep a changelog format by default.
- API breaking changes detection with cargo-semver-checks.
- Cargo workspaces support.
- No configuration required.
- Optional
cargo update
before releasing. - Git tag created for every released package.
- Package published to any cargo registry.
- GitHub/Gitea releases.
Releases made easy
Release-plz makes releasing Rust packages child's play:
- For every commit, release-plz creates a release Pull Request from CI.
- The release Pull Request reminds the maintainer about the unpublished changes.
- The maintainer reviews and merges the pull request.
- Release-plz releases the updated packages from CI.
In short, release-plz makes releasing Rust packages as easy as clicking the pull request "merge" button.
Additionally, publishing creates with release-plz from CI adds visibility and transparency to the release process.