Skip to content
This repository has been archived by the owner on Aug 25, 2021. It is now read-only.

Latest commit

 

History

History
77 lines (40 loc) · 2.76 KB

RELEASING.md

File metadata and controls

77 lines (40 loc) · 2.76 KB

HOWTO: Releasing

All releases of this repository are normally made by GitHub Actions when release Git tag is pushed. Manual releasing should be avoided asap.

BEFORE release

  1. Ensure crate's dependencies do NOT contain path option in Cargo.toml.
    While referring local dependency via path is neat and helpful for development, it cannot be used for publishing a release version to crates.io.

  2. Set the correct crate version in its Cargo.toml.
    Usually, this is a change from x.y.z-dev to x.y.z. Ensure version bump follows Semantic Versioning 2.0.0.

  3. Check release build succeeds with cargo package.
    To be sure that crate will be released OK on crates.io run make release.crates crate=<crate-name> publish=no and fix any appeared errors.

  4. Correct and prepare crate's CHANGELOG.md.
    All its user-facing changes should be described explicitly and clear. It should contain links to all related milestones and roadmaps of this release. It should contain the correct version and date of release.

Realising

  1. Commit all the changes for the prepared release with a commit message:

    Prepare <version> release of '<crate-name>' crate
    
  2. Apply Git version tag of the release. Its format must be <crate-name>-<version>. For example:

    • medea-macro-3.2.1 to release 3.2.1 version of medea-macro crate;
    • medea-2.4.8-beta.1 to release 2.4.8-beta.1 version of medea crate.
  3. Push the version tag to GitHub.

After release

After release there is no need to switch crate's version back to x.y.z-dev and refer its local dependencies with path option immediately. Just do it when your development process would really require a such change.

Broken release

If somehow the incorrect code has been released, the following steps should be done:

  1. Yank the broken version of released crate on crates.io.
  2. Apply the necessary fixes to the code base.
  3. Bump up patch version of the crate.
  4. Prepare its release and push it.

Manual releasing

To perform a full releasing process manually, carefully examine Releasing section of .github/workflows/ci.yml spec and repeat the necessary actions. Beware that releasing process may involve publishing not only to crates.io, but also to GitHub Releases, NPM and GitHub Pages (Helm chats, etc).