This project uses cargo-release in order to prepare new releases, tag and sign the relevant git commit, and publish the resulting artifacts to crates.io.
The release process follows the usual PR-and-review flow, allowing an external reviewer to have a final check before publishing.
These steps show how to release version x.y.z on the origin remote (this can be checked via git remote -av).
Push access to the upstream repository is required in order to publish the new tag and the PR branch.
:warning:: if origin is not the name of the locally configured remote that points to the upstream git repository (i.e. git@github.com:coreos/ignition-config-rs.git), be sure to assign the correct remote name to the UPSTREAM_REMOTE variable.
make sure the project is clean and prepare the environment:
[x] Make sure cargo-release is up to date: cargo install cargo-release
[x] cargo test --all-features
[x] cargo clean
[x] git clean -fd
[x] RELEASE_VER=x.y.z
[x] UPSTREAM_REMOTE=origin
create release commits on a dedicated branch and tag it (the commits and tag will be signed with the GPG signing key you configured):
[x] git checkout -b release-${RELEASE_VER}
[x] cargo release --execute ${RELEASE_VER} (and confirm the version when prompted)
Release process
This project uses cargo-release in order to prepare new releases, tag and sign the relevant git commit, and publish the resulting artifacts to crates.io. The release process follows the usual PR-and-review flow, allowing an external reviewer to have a final check before publishing.
Requirements
This guide requires:
git
cargo
(suggested: latest stable toolchain from rustup)cargo-release
(suggested:cargo install -f cargo-release
)Release checklist
These steps show how to release version
x.y.z
on theorigin
remote (this can be checked viagit remote -av
). Push access to the upstream repository is required in order to publish the new tag and the PR branch.:warning:: if
origin
is not the name of the locally configured remote that points to the upstream git repository (i.e.git@github.com:coreos/ignition-config-rs.git
), be sure to assign the correct remote name to theUPSTREAM_REMOTE
variable.make sure the project is clean and prepare the environment:
cargo-release
is up to date:cargo install cargo-release
cargo test --all-features
cargo clean
git clean -fd
RELEASE_VER=x.y.z
UPSTREAM_REMOTE=origin
create release commits on a dedicated branch and tag it (the commits and tag will be signed with the GPG signing key you configured):
git checkout -b release-${RELEASE_VER}
cargo release --execute ${RELEASE_VER}
(and confirm the version when prompted)open and merge a PR for this release:
git push ${UPSTREAM_REMOTE} release-${RELEASE_VER}
publish the artifacts (tag and crate):
git checkout v${RELEASE_VER}
grep "^version = \"${RELEASE_VER}\"$" Cargo.toml
produces outputgit push ${UPSTREAM_REMOTE} v${RELEASE_VER}
cargo publish
publish this release on GitHub:
sha256sum target/package/ignition-config-rs-${RELEASE_VER}.crate
clean up:
cargo clean
git checkout main
git pull ${UPSTREAM_REMOTE} main
git push ${UPSTREAM_REMOTE} :release-${RELEASE_VER}
git branch -d release-${RELEASE_VER}