Release-plz helps you release your Rust packages by automating:
- CHANGELOG generation (with git-cliff).
- Creation of GitHub/Gitea releases.
- Publishing to a cargo registry (
- Version bumps in
Release-plz updates your packages with a release Pull Request based on:
- Your git history, following Conventional commits.
- API breaking changes (detected by cargo-semver-checks).
🤔 What's a Release PR?
Release-plz maintains Release PRs, keeping them up-to-date as you merge additional commits. When you're ready to create a release, simply merge the release PR.
When you merge the Release PR (or when you edit the
Cargo.toml versions by yourself),
- Creates a git tag named
- Publishes the package to the cargo registry by running
- Publishes a GitHub/Gitea release based on the git tag.
Learn how to use release-plz in the mdbook docs.
🤖 Running release-plz
There are two ways to run release-plz:
- GitHub Action: Run Release-plz from CI. The action both updates and releases your packages.
- CLI: Run release-plz from your terminal or other CI systems (Gitea supported).
🌓 Similar projects
- release-please: release-plz is inspired by release-please, but instead of determining the next versions based on git tags, release-plz compares local packages with the ones published in the cargo registry. Plus, release-plz doesn't need any configuration and is optimized for Rust projects.
- cargo-smart-release: Fearlessly release workspace crates and with beautiful semi-handcrafted changelogs.
Parts of the codebase are inspired by: