Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release coreos-installer 0.6.0 #362

Closed
31 tasks done
bgilbert opened this issue Aug 25, 2020 · 1 comment
Closed
31 tasks done

Release coreos-installer 0.6.0 #362

bgilbert opened this issue Aug 25, 2020 · 1 comment
Assignees
Labels
release Checklist for performing a release

Comments

@bgilbert
Copy link
Contributor

bgilbert commented Aug 25, 2020

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
  • An account on quay.io
  • Write access to this GitHub project
  • Upload access to this project on GitHub, crates.io, and quay.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.

  • make sure the project is clean and prepare the environment:
    • cargo test
    • cargo clean
    • git clean -fd
    • RELEASE_VER=x.y.z
    • UPSTREAM_REMOTE=origin

⚠️: UPSTREAM_REMOTE should reference the locally configured remote that points to the upstream git repository.

  • create release commits on a dedicated branch and tag it:

    • git checkout -b release-${RELEASE_VER}
    • cargo release (and confirm the version when prompted)
  • open 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 two commits
    • 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
    • tar -czf target/coreos-installer-${RELEASE_VER}-vendor.tar.gz vendor
  • publish this release on GitHub:

    • open a web browser and create a GitHub Release for the tag above
    • write a short changelog (i.e. re-use the PR content)
    • upload target/coreos-installer-${RELEASE_VER}-vendor.tar.gz
    • record digests of local artifacts:
      • sha256sum target/package/coreos-installer-${RELEASE_VER}.crate
      • sha256sum target/coreos-installer-${RELEASE_VER}-vendor.tar.gz
    • publish release
  • update the release tag on Quay:

    • visit the Quay tags page and wait for a versioned tag to appear
    • click the gear next to the tag, select "Add New Tag", enter release, and confirm
  • clean up:

    • cargo clean
    • rm -rf vendor
    • git checkout master
    • git pull ${UPSTREAM_REMOTE} master
    • git push ${UPSTREAM_REMOTE} :release-${RELEASE_VER}
    • git branch -d release-${RELEASE_VER}
@bgilbert bgilbert added the release Checklist for performing a release label Aug 25, 2020
@bgilbert bgilbert self-assigned this Aug 25, 2020
@bgilbert
Copy link
Contributor Author

bgilbert commented Aug 25, 2020

Release notes

Major changes:

  • Add pxe ignition subcommands to generate or show an Ignition config wrapped in an appendable initrd
  • iso: Move iso subcommands to iso ignition and deprecate the former
  • iso: Rename iso ignition embed -c/--config to -i/--ignition-file

Minor changes:

  • install: Fix kernel ignoring saved partitions after install failure
  • install: Fix loss of saved partitions if original partition table is invalid
  • install: Retain saved partitions in partition table at all times during install
  • install: Clear partition table on failure by writing empty GPT rather than zeroes, except on DASD
  • install: Reread kernel partition table after restoring partitions on failure
  • install: Make --preserve-on-error saved partition stash file the same size as the target disk
  • install: Pass first-boot kernel arguments to zipl on s390x
  • install: Avoid segfault due to miscompilation in s390x release build
  • iso: Compress Ignition config with XZ to increase capacity
  • systemd: Suppress reboot after failure of a hook unit
  • Document hooking install via an Ignition config

Internal changes:

  • rootmap: Fix failure on unmodified rootfs
  • rootmap: Inject rootflags kernel argument

Packaging changes:

  • Require gptman ≥ 0.7

SHA-256 digests:

  • crate:``
  • vendor: ``

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release Checklist for performing a release
Projects
None yet
Development

No branches or pull requests

1 participant