Skip to content

Latest commit

 

History

History
139 lines (104 loc) · 4.2 KB

doing-releases.md

File metadata and controls

139 lines (104 loc) · 4.2 KB

[[!meta title="Doing Releases"]]

Prerequisites

A week(ish) before

  • Validate autobuilds: green recently? updated with all -Werror classes that we've eradicated recently?
  • Stop merging things
  • Create a draft "pre-release" "Save draft" via GitHub's release GUI, converting ikiwiki release notes to GitHub via the html2text pipeline below
  • File an issue for results of patch testing (and rebasing)
  • Manually test that popular [[patches]] apply and build, and perhaps even that their runtime behavior looks right

During

  • 3 people
    • 1 with a working PGP key and passphrase and a clean git checkout
    • 2 reviewers so release PRs can be merged immediately (currently these people)
  • 15 minutes for the autobuilds to run green

Shortly after


1. Submit a version-bump PR

Ensure release notes and CHANGES.md are in sync (if we're still using both), then:

[[!format sh """ vi Makefile # bump RELEASE_VERSION make release-changes release-copyright git diff make release-commit """]]

2. Have the version-bump PR merged

Requires 2 reviewers (as any PR).

3. Create the release tag

Don't use GitHub's release notes GUI for this (can't PGP-sign tags). Instead:

[[!format sh """ make release-tag make release-tag-push """]]

The first line of the tag description is the release name without the dash, i.e. "notqmail 1.09". The rest of it is a reduced version of the release notes: just the bullet points, no intermediate headlines or other comments.

4. Trivially re-rebase our patch branches

Don't automate this, but do walk the list like so:

[[!format sh """ for i in $(git branch -r | grep origin/patches/notqmail/ | sed -e 's|origin/||'); do git checkout $i git rebase main git push -f origin HEAD done """]]

5. Create the release

[[!format sh """ make release-tarballs make release-signatures """]]

Copy the website's release notes to clipboard in GitHub format one last time:

[[!format sh """ cat html/releases/1.09/index.html
| sed -e 's| href="../../| href="https://notqmail.org/|g'
-e 's| href="../| href="https://notqmail.org/releases/|g'
| html2text --body-width 0
| sed -e '1d'
| grep -v '^Last edited '
| grep -v '^Mirror: '
| pbcopy """]]

From the release notes GUI:

  1. Find the draft release already in progress.
  2. Edit it.
  3. At top, for "Choose a tag", choose the newly created tag.
  4. At bottom, for "Attach binaries", upload the 4 artifacts (2 tarballs, 2 sigs).
  5. At center, for the release notes, select-all and paste
  6. At bottom, set as the latest release, and publish!

6. Push release notes to the website

Merge the local (or prod) branch to main.

Maybe also push copies of the release artifacts?

7. Post everywhere about the new release

  1. Mailing lists:
    • the qmail list
    • maybe a new users@ list at notqmail.org?
  2. Discussion forums:
  3. Social media

8. Update packages we control

  1. Open Build Service
    • RPM builds: notqmail.spec (bump version number)
    • Debian builds: notqmail.dsc (bump version number)
    • for the .tar.gz link: _service (update tarball link)
  2. Gentoo (DerDakon)
  3. pkgsrc (schmonz)

9. Review and adjust the [[roadmap]]

  • Remember where we thought we wanted to go from here
  • Add/change/defer/remove as needed