Release 5.3.0
sohankunkerkar opened this issue · comments
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
)- A verified account on crates.io
- Write access to this GitHub project
- Upload access to this project on GitHub and crates.io
- Membership in the Fedora CoreOS Crates Owners group
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.
origin
is not the name of the locally configured remote that points to the upstream git repository (i.e. git@github.com:coreos/afterburn.git
), be sure to assign the correct remote name to the UPSTREAM_REMOTE
variable.
-
make sure the project is clean and prepare the environment:
- Make sure
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
- Make sure
-
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}
- open a web browser and create a PR for the branch above
- make sure the resulting PR contains exactly one commit
- in the PR body, write a short changelog with relevant changes since last release
- get the PR reviewed, approved and merged
-
-
publish the artifacts (tag and crate):
-
git checkout v${RELEASE_VER}
- verify that
grep "^version = \"${RELEASE_VER}\"$" Cargo.toml
produces output -
git push ${UPSTREAM_REMOTE} v${RELEASE_VER}
-
cargo publish
-
-
assemble vendor archive:
-
cargo vendor target/vendor
-
rm -rf vendor/winapi*gnu*/lib/*.a
-
tar -czf target/afterburn-${RELEASE_VER}-vendor.tar.gz -C target vendor
-
-
publish this release on GitHub:
- find the new tag in the GitHub tag list, click the triple dots menu, and create a release for it
- write a short changelog (i.e. re-use the PR content)
- upload
target/afterburn-${RELEASE_VER}-vendor.tar.gz
- record digests of local artifacts:
sha256sum target/package/afterburn-${RELEASE_VER}.crate
sha256sum target/afterburn-${RELEASE_VER}-vendor.tar.gz
- publish release
-
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}
-
-
Fedora packaging:
- update the
rust-afterburn
spec file in Fedora- bump the
Version
- switch the
Release
back to1%{?dist}
- remove any patches obsoleted by the new release
- update changelog
- bump the
- run
spectool -g -S rust-afterburn.spec
- run
kinit your_fas_account@FEDORAPROJECT.ORG
- run
fedpkg new-sources <crate-name> <vendor-tarball-name>
- PR the changes in Fedora
- once the PR merges to rawhide, merge rawhide into the other relevant branches (e.g. f35) then push those, for example:
git checkout rawhide git pull --ff-only git checkout f35 git merge --ff-only rawhide git push origin f35
- on each of those branches run
fedpkg build
- once the builds have finished, submit them to bodhi, filling in:
rust-afterburn
forPackages
- selecting the build(s) that just completed, except for the rawhide one (which gets submitted automatically)
- writing brief release notes like "New upstream release; see release notes at
link to GitHub release
" - leave
Update name
blank Type
,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.
- submit a fast-track for FCOS testing-devel
- submit a fast-track for FCOS next-devel if it is open
- update the
-
RHCOS packaging:
- update the
rust-afterburn
spec file- bump the
Version
- switch the
Release
back to1%{?dist}
- remove any patches obsoleted by the new release
- update changelog
- bump the
- run
spectool -g -S rust-afterburn.spec
- run
kinit your_account@REDHAT.COM
- run
rhpkg new-sources <crate-name> <vendor-tarball-name>
- PR the changes
- get the PR reviewed and merge it
- update your local repo and run
rhpkg build
- update the
CentOS Stream 9 packaging:
- to be written
Need #728 before proceeding with this release
RHCOS packaging is blocked on https://issues.redhat.com/browse/CLOUDBLD-9869
RHCOS packaging is blocked on https://issues.redhat.com/browse/CLOUDBLD-9869
This is resolved