Prerequisites
A week(ish) before
- Validate autobuilds: green recently? updated with all
-Werrorclasses 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
html2textpipeline 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
gitcheckout - 2 reviewers so release PRs can be merged immediately (currently these people)
- 1 with a working PGP key and passphrase and a clean
- 15 minutes for the autobuilds to run green
Shortly after
- 1 person with access to Open Build Service (currently these people)
1. Submit a version-bump PR
Ensure release notes and CHANGES.md are in sync (if we're still using both), then:
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:
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:
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
make release-tarballs
make release-signatures
Copy the website's release notes to clipboard in GitHub format one last time:
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:
- Find the draft release already in progress.
- Edit it.
- At top, for "Choose a tag", choose the newly created tag.
- At bottom, for "Attach binaries", upload the 4 artifacts (2 tarballs, 2 sigs).
- At center, for the release notes, select-all and paste
- 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
- Mailing lists:
- the qmail list
- maybe a new
users@list at notqmail.org?
- Discussion forums:
- Social media
8. Update packages we control
- Open Build Service
- RPM builds:
notqmail.spec(bump version number) - Debian builds:
notqmail.dsc(bump version number) - for the
.tar.gzlink:_service(update tarball link)
- RPM builds:
- Gentoo (
DerDakon) - pkgsrc (
schmonz)
9. Review and adjust the roadmap
- Remember where we thought we wanted to go from here
- Add/change/defer/remove as needed