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.
In order to ease downstream packaging of Rust binaries, an archive of vendored dependencies is also provided (only relevant for offline builds).
Requirements
This guide requires:
- A web browser (and network connectivity)
git
- GPG setup and personal key for signing
cargo (suggested: latest stable toolchain from rustup)
cargo-release (suggested: cargo install -f cargo-release)
cargo vendor-filterer (suggested: cargo install -f cargo-vendor-filterer)
- Write access to this GitHub project
- A verified account on crates.io
- An account on quay.io
- Write access to this project on quay.io
- Membership in the Fedora CoreOS Crates Owners group, which will give you upload access to crates.io
Release checklist
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.
⚠️: if origin is not the name of the locally configured remote that points to the upstream git repository (i.e. git@github.com:coreos/coreos-installer.git), be sure to assign the correct remote name to the UPSTREAM_REMOTE variable.
-
prepare environment:
-
check Cargo.toml for unintended increases of lower version bounds:
-
update all dependencies:
-
write release notes:
-
land the changes:
-
make sure the project is clean:
-
create release commit on a dedicated branch and tag it (the commit and tag will be signed with the GPG signing key you configured):
-
open and merge a PR for this release:
-
publish the artifacts (tag and crate):
-
assemble vendor archive:
-
publish this release on GitHub:
-
update the release tag on Quay:
-
clean up the local environment (optional, but recommended):
-
Fedora packaging:
CentOS Stream 9 packaging:
CentOS Stream 10 packaging:
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.
In order to ease downstream packaging of Rust binaries, an archive of vendored dependencies is also provided (only relevant for offline builds).
Requirements
This guide requires:
gitcargo(suggested: latest stable toolchain from rustup)cargo-release(suggested:cargo install -f cargo-release)cargo vendor-filterer(suggested:cargo install -f cargo-vendor-filterer)Release checklist
These steps show how to release version
x.y.zon theoriginremote (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.
originis not the name of the locally configured remote that points to the upstream git repository (i.e.git@github.com:coreos/coreos-installer.git), be sure to assign the correct remote name to theUPSTREAM_REMOTEvariable.prepare environment:
RELEASE_VER=x.y.zUPSTREAM_REMOTE=origingit checkout -b pre-release-${RELEASE_VER}check
Cargo.tomlfor unintended increases of lower version bounds:git diff $(git describe --abbrev=0) Cargo.tomlupdate all dependencies:
cargo updategit add Cargo.lock && git commit -m "cargo: update dependencies"write release notes:
docs/release-notes.mdgit add docs/release-notes.md && git commit -m "docs/release-notes: update for release ${RELEASE_VER}"land the changes:
docs/release-notes.mdchanges into mainmake sure the project is clean:
cargo-releaseandcargo-vendor-filtererare up to date:cargo install cargo-release cargo-vendor-filterergit checkout main && git pull ${UPSTREAM_REMOTE} maincargo vendor-filterer target/vendorcargo test --all-features --config 'source.crates-io.replace-with="vv"' --config 'source.vv.directory="target/vendor"'cargo cleangit clean -fdcreate 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.tomlproduces outputgit push ${UPSTREAM_REMOTE} v${RELEASE_VER}cargo publishassemble vendor archive:
cargo vendor-filterer --format=tar.gz --prefix=vendor target/coreos-installer-${RELEASE_VER}-vendor.tar.gzpublish this release on GitHub:
target/coreos-installer-${RELEASE_VER}-vendor.tar.gzsha256sum target/package/coreos-installer-${RELEASE_VER}.cratesha256sum target/coreos-installer-${RELEASE_VER}-vendor.tar.gzupdate the
releasetag on Quay:release, and confirmclean up the local environment (optional, but recommended):
cargo cleangit checkout maingit pull ${UPSTREAM_REMOTE} maingit push ${UPSTREAM_REMOTE} :pre-release-${RELEASE_VER} :release-${RELEASE_VER}git branch -d pre-release-${RELEASE_VER} release-${RELEASE_VER}Fedora packaging:
fedpkg buildrust-coreos-installerforPackageslink to GitHub release"Update nameblankType,SeverityandSuggestioncan be left asunspecifiedunless it is a security release. In that case selectsecuritywith the appropriate severity.Stable karmaandUnstablekarma can be set to2and-1, respectively.CentOS Stream 9 packaging:
rebase-c9s-coreos-installerissue in the internal team-operations repo and follow the steps thereCentOS Stream 10 packaging:
rebase-c10s-coreos-installerissue in the internal team-operations repo and follow the steps there