First off, thank you for considering contributing to release-plz.
If your contribution is not straightforward, please first discuss the change you wish to make by creating a new issue before making the change.
Before reporting an issue on the issue tracker, please check that it has not already been reported by searching for some related keywords.
Try to do one pull request per change.
This is no different than other Rust projects.
git clone https://github.com/release-plz/release-plz
cd release-plz
cargo test
-
Build and run release version:
cargo build --release && cargo run --release
-
Run Clippy:
cargo clippy --all-targets --all-features --workspace
-
Run all tests:
cargo test --all-features --workspace
-
Check to see if there are code formatting issues
cargo fmt --all -- --check
-
Format the code in the project
cargo fmt --all
- publish: A crate can be published to crates.io or to a private cargo registry.
- release: The release is the process that goes from updating the version through release-plz to publishing the single crate(s).
- package: For our purposes, crate and package are synonyms.
In the codebase, we prefer to use the word
package
instead ofcrate
.
We use Gitea as a Git server for our integration tests.
- Start the Gitea server with
cd tests && docker compose up
. - See their OpenAPI documentation at
http://localhost:3000/api/swagger
.
If you don't want to run tests that need docker, you can run cargo test --no-default-features
.