Uploaded image for project: 'CoreOS OCP'
  1. CoreOS OCP
  2. COS-2687

[coreos/coreos-installer] Release v0.21.0

XMLWordPrintable

    • Upstream
    • 5
    • False
    • Hide

      None

      Show
      None
    • False
    • 249 - Core Packages
    • 0
    • 0.000

      [2149134378] Upstream Reporter: Steven Presti
      Upstream issue status: Closed
      Upstream description:

      1. Release process

      This project uses [cargo-release][cargo-release] in order to prepare new releases, tag and sign the relevant git commit, and publish the resulting artifacts to [crates.io][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).

        1. Requirements

      This guide requires:

      • A web browser (and network connectivity)
      • `git`
      • [GPG setup][GPG setup] and personal key for signing
      • `cargo` (suggested: latest stable toolchain from [rustup][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](https://github.com/orgs/coreos/teams/fedora-coreos-crates-owners/members), which will give you upload access to crates.io
        1. 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.

      :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/coreos-installer.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:
      • [x] `git diff $(git describe --abbrev=0) Cargo.toml`
      • update all dependencies:
      • [x] `cargo update`
      • [x] `git add Cargo.lock && git commit -m "cargo: update dependencies"`
      • write release notes:
      • [x] write release notes in `docs/release-notes.md`
      • [x] `git add docs/release-notes.md && git commit -m "docs/release-notes: update for release ${RELEASE_VER}"`
      • land the changes:
      • [x] PR the changes, get them reviewed, approved and merged
      • [ ] if doing a branched release, also include a PR to merge the `docs/release-notes.md` changes into main
      • make sure the project is clean:
      • [ ] Make sure `cargo-release` and `cargo-vendor-filterer` are up to date: `cargo install cargo-release cargo-vendor-filterer`
      • [ ] `git checkout main && git pull ${UPSTREAM_REMOTE} main`
      • [ ] `cargo vendor-filterer target/vendor`
      • [ ] `cargo test --all-features --config 'source.crates-io.replace-with="vv"' --config 'source.vv.directory="target/vendor"'`
      • [ ] `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):
      • [x] `git checkout b release${RELEASE_VER}`
      • [x] `cargo release --execute ${RELEASE_VER}` (and confirm the version when prompted)
      • open and merge a PR for this release:
      • [x] `git push ${UPSTREAM_REMOTE} release-${RELEASE_VER}`
      • [x] open a web browser and create a PR for the branch above
      • [x] make sure the resulting PR contains exactly one commit
      • [x] get the PR reviewed, approved and merged
      • publish the artifacts (tag and crate):
      • [x] `git checkout v${RELEASE_VER}`
      • [x] verify that `grep "^version = "${RELEASE_VER}"$" Cargo.toml` produces output
      • [x] `git push ${UPSTREAM_REMOTE} v${RELEASE_VER}`
      • [x] `cargo publish`
      • assemble vendor archive:
      • [x] `cargo vendor-filterer -format=tar.gz --prefix=vendor target/coreos-installer${RELEASE_VER}-vendor.tar.gz`
      • publish this release on GitHub:
      • [x] find the new tag in the [GitHub tag list](https://github.com/coreos/coreos-installer/tags), click the triple dots menu, and create a release for it
      • [x] copy in the changelog from the release notes doc
      • [x] upload `target/coreos-installer-${RELEASE_VER}-vendor.tar.gz`
      • [x] record digests of local artifacts:
      • `sha256sum target/package/coreos-installer-${RELEASE_VER}.crate`
      • `sha256sum target/coreos-installer-${RELEASE_VER}-vendor.tar.gz`
      • [x] publish release
      • clean up the local environment (optional, but recommended):
      • [x] `cargo clean`
      • [x] `git checkout main`
      • [x] `git pull ${UPSTREAM_REMOTE} main`
      • [x] `git push ${UPSTREAM_REMOTE} :pre-release-${RELEASE_VER} :release-${RELEASE_VER}`
      • [x] `git branch d pre-release${RELEASE_VER} release-${RELEASE_VER}`
      • RHCOS packaging:
      • [ ] update the [spec file](https://gitlab.com/redhat/rhel/rpms/coreos-installer)
      • bump the `Version`
      • switch the `Release` back to `1%{?dist}`
      • remove any patches obsoleted by the new release
      • update changelog
      • [ ] run `spectool -g -S coreos-installer.spec`
      • [ ] run `kinit your_account@IPA.REDHAT.COM`
      • [ ] run `rhpkg new-sources $(spectool -S coreos-installer.spec | sed 's:.*/::')`
      • [ ] PR the changes
      • [ ] get the PR reviewed and merge it
      • [ ] update your local repo and run `rhpkg build`
      • [ ] file ticket similar to [this one](https://issues.redhat.com/browse/ART-3772) to sync the new version to mirror.openshift.com
      • [ ] wait until mirror.openshift.com is updated and confirm the new version is correct

      CentOS Stream 9 packaging:

      • [x] Create a `rebase-c9s-coreos-installer` issue in the internal team-operations repo and follow the steps there

      [cargo-release]: https://github.com/sunng87/cargo-release
      [rustup]: https://rustup.rs/
      [crates-io]: https://crates.io/
      [GPG setup]: https://docs.github.com/en/github/authenticating-to-github/managing-commit-signature-verification

              rh-ee-spresti Steven Presti
              upstream-sync Upstream Sync
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: