Release checklist

Last code touches:

  • make the code ready, collect patches queued for the release

  • look to mailinglist for any relevant last-minute fixes

  • skim patches for typos, inconsistent subjects

Pre-checks:

  • update package in OBS, (multi arch build checks)

  • run all functional tests locally with

    • defaults

    • D=asan

    • D=ubsan

  • run all build tests (tests/build-tests.sh)

  • run with fstests

  • check Github actions for status (https://github.com/kdave/btrfs-progs/actions)

    • branch devel

    • branch release-test -- extensive pre-release build checks

    • branch coverage-test -- code coverage, for information purposes only

Pre-release:

  • write CHANGES entry (will be visible on RTD right away)

Python btrfsutil (pypi.org):

  • rebuild whole project (regenerate constants.c)

  • cd libbtrfsutil/python

  • edit setup.py version manually (the toplevel VERSION is not accessible during dist build)

  • python3 -m build -- build dist files

  • twine check dist/*.tar.gz -- look for warnings

  • twine upload dist/*.tar.gz -- make sure there’s only the latest version, twine must need access token to pypi.org

Release:

  • tag release, sign

  • build check of unpacked tar

  • generate documentation

  • make tar

  • upload tar to kernel.org

  • refresh git branches, push tags

Post-release:

  • write and send announcement mail to the mailinglist

  • update title on IRC

  • github updates

    • create a new release from the latest tag

    • copy text from CHANGES as contents, formatting is the same

    • wait for static binaries github action to finish

    • run ci/actions/update-artifacts to copy the built static binaries to the release (requires github command line tool gh)