Releasing of workspace crates of this project is performed by pushing the Git release tag (having <crate-name>@<version>
format), following by the CI pipeline creating a GitHub release and publishing the crate to crates.io.
WARNING: Only one workspace crate may be released at a time. So, if you need to release multiple workspace crates, do this sequentially.
We use cargo-release
to automate crate releases. You will need to install it locally:
cargo install cargo-release
To produce a new release a workspace crate, perform the following steps:
-
Check its
CHANGELOG.md
file to be complete and correctly formatted. The section for the new release should start with## master
header. Commit any changes you've made. -
Determine a new release [bump level] (
patch
,minor
,major
, or defaultrelease
). -
Run the release process in dry-run mode and check the produced diffs to be made in the returned output.
make release crate=juniper ver=minor
-
(Optional) Not everything may be captured in dry-run mode. It may be a good idea to run a local test, without pushing the created Git commit and tag.
make release crate=juniper ver=minor exec=yes push=no
Once everything is prepared and checked, just execute the releasing process:
make release crate=juniper ver=minor exec=yes
Once the CI pipeline for the pushed Git tag successfully finishes, the crate is fully released.