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.
prepare environment:
[x] RELEASE_VER=x.y.z
[x] UPSTREAM_REMOTE=origin
[x] git checkout -b pre-release-${RELEASE_VER}
check Cargo.toml for unintended increases of lower version bounds:
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.prepare environment:
RELEASE_VER=x.y.z
UPSTREAM_REMOTE=origin
git checkout -b pre-release-${RELEASE_VER}
check
Cargo.toml
for unintended increases of lower version bounds:git diff $(git describe --abbrev=0) Cargo.toml
write release notes:
docs/release-notes.md
git add docs/release-notes.md && git commit -m "docs/release-notes: update for release ${RELEASE_VER}"
land the changes:
docs/release-notes.md
changes into mainmake sure the project is clean:
cargo-release
is up to date:cargo install cargo-release
git checkout main && git pull ${UPSTREAM_REMOTE} main
cargo test --all-features
cargo clean
git clean -fd
create release commit on a dedicated branch and tag it (the commit 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-${RELEASE_VER}.crate
clean up the local environment (optional, but recommended):
cargo clean
git checkout main
git pull ${UPSTREAM_REMOTE} main
git push ${UPSTREAM_REMOTE} :pre-release-${RELEASE_VER} :release-${RELEASE_VER}
git branch -d pre-release-${RELEASE_VER} release-${RELEASE_VER}
Fedora packaging:
rust-ignition-config
spec file in FedoraVersion
Release
back to1%{?dist}
spectool -g -S rust-ignition-config.spec
kinit your_fas_account@FEDORAPROJECT.ORG
fedpkg new-sources $(spectool -S rust-ignition-config.spec | sed 's:.*/::')
fedpkg build
rust-ignition-config
forPackages
link to GitHub release
"Update name
blankType
,Severity
andSuggestion
can be left asunspecified
unless it is a security release. In that case selectsecurity
with the appropriate severity.Stable karma
andUnstable
karma can be set to2
and-1
, respectively.