juniper/RELEASING.md
Kai Ren 72ed45a77c
Rework CI and project toolchain (#1043)
- remove `cargo-make` integration
- rework CI pipeline more granular and precise
- rework releasing process
- tune up project layout
- fill up new CHANGELOGs

Additionally:
- fix latest nightly/stable Rust inconsistencies
2022-04-08 17:44:50 +03:00

2 KiB

Releasing new crate versions

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.

Prerequisites

We use cargo-release to automate crate releases. You will need to install it locally:

cargo install cargo-release

Preparing

To produce a new release a workspace crate, perform the following steps:

  1. 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.

  2. Determine a new release [bump level] (patch, minor, major, or default release).

  3. 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
    
  4. (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
    

Executing

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.