tahoe-lafs/docs/how_to_make_a_tahoe-lafs_release.org
Jean-Paul Calderone e107e11079 Remove references to the bare "coverage" tox environment
* We stopped using Appveyor a while ago so entirely remove its configuration.
* There's no release step where coverage information is *examined* so why
  collect it?
* Switch GitHub Actions config to py27-coverage tox environment
2020-08-27 10:37:50 -04:00

4.4 KiB
Raw Blame History

How to Make a Tahoe-LAFS Release

Any developer with push priveleges can do most of these steps, but a "Release Maintainer" is required for some signing operations these steps are marked with (Release Maintainer). Currently, the following people are Release Maintainers:

select features/PRs for new release [0/2]

  • made sure they are tagged/labeled
  • merged all release PRs

basic quality checks [0/3]

  • all travis CI checks pass
  • all appveyor checks pass
  • all buildbot workers pass their checks

freeze master branch [0/1]

  • announced the freeze of the master branch on IRC (i.e. non-release PRs won't be merged until after release)

sync documentation [0/7]

  • NEWS.rst: (run "tox -e news")
  • added final release name and date to top-most item in NEWS.rst
  • updated relnotes.txt (change next, last versions; summarize NEWS)
  • updated CREDITS
  • updated docs/known_issues.rst
  • docs/INSTALL.rst only points to current tahoe-lafs-X.Y.Z.tar.gz source code file
  • updated https://tahoe-lafs.org/hacktahoelafs/

sign + build the tag [0/8]

  • code passes all checks / tests (i.e. all CI is green)
  • documentation is ready (see above)
  • (Release Maintainer): git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-X.Y.Z" tahoe-lafs-X.Y.Z
  • build code locally: tox -e py27,codechecks,deprecations,docs,integration,upcoming-deprecations
  • created tarballs (they'll be in dist/ for later comparison) tox -e tarballs
  • release version is reporting itself as intended version ls dist/
  • 'git pull' doesn't pull anything
  • pushed tag to trigger buildslaves git push official master TAGNAME
  • confirmed Dockerhub built successfully: https://hub.docker.com/r/tahoelafs/base/builds/

sign the release artifacts [0/8]

  • (Release Maintainer): pushed signed tag (should trigger Buildbot builders)
  • Buildbot workers built all artifacts successfully
  • downloaded upstream tarballs+wheels
  • announce on IRC that master is unlocked
  • compared upstream tarballs+wheels against local copies
  • (Release Maintainer): signed each upstream artifacts with "gpg -ba -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A FILE"
  • added to relnotes.txt: [0/3]

    • prefix with SHA256 of tarballs
    • release pubkey
    • git revision hash
  • GPG-signed the release email with release key (write to relnotes.txt.asc) Ideally this is a Release Maintainer, but could be any developer

publish release artifacts [0/9]

  • uploaded to PyPI via: twine upload dist/*
  • uploaded *.asc to org ~source/downloads/
  • test install works properly: pip install tahoe-lafs
  • copied the release tarballs and signatures to tahoe-lafs.org: ~source/downloads/
  • moved old release out of ~source/downloads (to downloads/old/?)
  • ensured readthedocs.org updated
  • uploaded wheels to https://tahoe-lafs.org/deps/
  • uploaded release to https://github.com/tahoe-lafs/tahoe-lafs/releases

document release in trac [0/]

  • closed the Milestone on the trac Roadmap

unfreeze master branch [0/]

  • announced on IRC that new PRs will be looked at/merged

announce new release [0/]