Awesome
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 (
crates.io
by default). - Version bumps in
Cargo.toml
.
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),
release-plz:
- Creates a git tag named
<package_name>-v<version>
(e.g.tokio-v1.8.1
). - Publishes the package to the cargo registry by running
cargo publish
. - Publishes a GitHub/Gitea release based on the git tag.
📚 Docs
Learn how to use release-plz in the 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).
💖 Users
Here you can find the public repositories using the release-plz GitHub action in CI:
- GitHub search 1 and 2
- Dependency graph
📽️ RustLab 23 talk
In RustLab 23, I showed how release-plz simplifies releasing Rust packages, why I created it, and what lessons I learned:
🌓 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.
🙏 Credits
Parts of the codebase are inspired by:
<br> <sup> Licensed under either of <a href="LICENSE-APACHE">Apache License, Version 2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option. </sup> <br> <sub> Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. </sub>