release-plz

Publish Rust crates from CI with a Release PR.

APACHE-2.0 License

Downloads
441.5K
Stars
654
Committers
14

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:

🤔 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:

📽️ 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:

Package Rankings
Top 7.61% on Alpine-edge
Top 11.39% on Crates.io
Badges
Extracted from project README
Crates.io CI Docker