2020-10-15 20:56:55 +00:00
=================
Release Checklist
=================
2024-12-13 01:28:17 +00:00
This release checklist specifies a series of checks that anyone engaged in
2021-10-28 07:26:13 +00:00
releasing a version of Tahoe should follow.
2020-10-15 20:56:55 +00:00
2020-10-30 01:11:34 +00:00
Any contributor can do the first part of the release preparation. Only
certain contributors can perform other parts. These are the two main
2020-10-30 00:50:22 +00:00
sections of this checklist (and could be done by different people).
2020-10-15 20:56:55 +00:00
2020-10-30 01:11:34 +00:00
A final section describes how to announce the release.
2021-10-28 07:26:13 +00:00
This checklist is based on the original instructions (in old revisions in the file
`docs/how_to_make_a_tahoe-lafs_release.org` ).
2020-10-15 20:57:55 +00:00
2020-10-15 20:56:55 +00:00
Any Contributor
2021-11-20 17:26:02 +00:00
===============
2020-10-15 20:56:55 +00:00
Anyone who can create normal PRs should be able to complete this
portion of the release process.
Prepare for the Release
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
2020-10-30 00:55:54 +00:00
The `master` branch should always be releasable.
It may be worth asking (on IRC or mailing-ist) if anything will be
merged imminently (for example, "I will prepare a release this coming
Tuesday if you want to get anything in").
2020-10-15 20:56:55 +00:00
- Create a ticket for the release in Trac
- Ticket number needed in next section
2021-11-18 11:04:56 +00:00
- Making first release? See `GPG Setup Instructions <gpg-setup.rst> `__ to make sure you can sign releases. [One time setup]
2020-10-15 20:56:55 +00:00
2021-10-28 07:26:13 +00:00
Get a clean checkout
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
2024-12-13 01:28:17 +00:00
The release proccess involves compressing source files and putting them in formats
suitable for distribution such as `` .tar.gz `` and `` zip `` . That said, it's neccesary to
2021-10-28 07:26:13 +00:00
the release process begins with a clean checkout to avoid making a release with
previously generated files.
2024-12-13 01:28:17 +00:00
- Inside the tahoe root dir run `` git clone . ../tahoe-release-x.x.x `` where (x.x.x is the release number such as 1.16.0).
2021-10-28 07:26:13 +00:00
2024-12-13 01:28:17 +00:00
.. note ::
The above command would create a new directory at the same level as your original clone named `` tahoe-release-x.x.x `` . You can name this folder however you want but it would be a good
2021-11-20 17:26:02 +00:00
practice to give it the release name. You MAY also discard this directory once the release
process is complete.
2021-10-28 07:26:13 +00:00
2024-12-13 01:28:17 +00:00
Get into the release directory and install dependencies by running:
2021-11-18 10:46:01 +00:00
2022-02-02 00:33:22 +00:00
- cd ../tahoe-release-x.x.x (assuming you are still in your original clone)
- python -m venv venv
- ./venv/bin/pip install --editable .[test]
2021-10-28 07:26:13 +00:00
2020-10-15 20:56:55 +00:00
Create Branch and Apply Updates
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
2024-12-13 01:28:17 +00:00
- Create a branch for the release/candidate: git checkout -b XXXX.release-1.16.0
- produce a new NEWS.txt file (this does a commit): tox -e news
- create the news for the release:
- touch newsfragments/<ticket number>.minor
- git add newsfragments/<ticket number>.minor
- git commit -m news
2021-01-05 02:19:40 +00:00
2024-12-13 01:28:17 +00:00
- manually fix `` NEWS.txt `` :
2021-10-28 07:26:13 +00:00
- proper title for latest release ("Release 1.16.0" instead of "Release ...post1432")
2020-10-30 00:58:19 +00:00
- double-check date (maybe release will be in the future)
2024-12-13 01:54:17 +00:00
- spot-check the release notes (these come from the newsfragments files though so don't do heavy editing)
2020-10-15 20:56:55 +00:00
- commit these changes
2021-01-05 02:19:40 +00:00
2024-12-13 01:28:17 +00:00
- update `` relnotes.txt `` :
2021-10-30 12:37:58 +00:00
- update all mentions of `` 1.16.0 `` to new and higher release version for example `` 1.16.1 ``
2020-10-15 20:56:55 +00:00
- update "previous release" statement and date
- summarize major changes
- commit it
2021-01-05 02:19:40 +00:00
2024-12-13 01:28:17 +00:00
- update `` nix/tahoe-lafs.nix `` :
2021-05-12 13:52:13 +00:00
- change the value given for `version` from `OLD.post1` to `NEW.post1`
2024-12-13 01:28:17 +00:00
- update `` docs/known_issues.rst `` if appropriate
2020-10-15 20:56:55 +00:00
- Push the branch to github
2024-12-13 01:28:17 +00:00
2020-10-15 20:56:55 +00:00
- Create a (draft) PR; this should trigger CI (note that github
doesn't let you create a PR without some changes on the branch so
2020-10-30 01:11:34 +00:00
running + committing the NEWS.txt file achieves that without changing
2020-10-15 20:56:55 +00:00
any code)
- Confirm CI runs successfully on all platforms
2024-12-19 05:37:16 +00:00
Create The Release
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- build all code locally
2021-11-18 10:48:32 +00:00
2020-10-15 20:56:55 +00:00
- these should all pass:
2021-01-05 02:19:40 +00:00
2024-12-19 05:37:16 +00:00
- tox -e py311,codechecks,docs,integration
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- these can fail (ideally they should not of course):
2021-01-05 02:19:40 +00:00
2022-02-02 00:33:22 +00:00
- tox -e deprecations,upcoming-deprecations
2021-01-05 02:19:40 +00:00
2024-12-19 05:37:16 +00:00
- install build dependencies
2022-01-10 18:48:55 +00:00
2024-12-19 05:37:16 +00:00
- pip install -e .[build]
2021-01-05 02:19:40 +00:00
2024-12-19 05:37:16 +00:00
- build tarball + wheel (should be built into dist/)
2021-11-18 10:46:01 +00:00
2024-12-19 05:37:16 +00:00
- hatchling build
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- inspect and test the tarballs
2021-01-05 02:19:40 +00:00
2024-12-19 05:37:16 +00:00
- install each in a fresh virtualenv
- run `tahoe` command
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- when satisfied, sign the tarballs:
2021-01-05 02:19:40 +00:00
2024-12-19 05:37:16 +00:00
- gpg --pinentry=loopback --armor -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A --detach-sign dist/tahoe_lafs-1.20.0rc0-py2.py3-none-any.whl
- gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.20.0rc0.tar.gz
2020-10-15 20:56:55 +00:00
Privileged Contributor
2021-11-20 17:26:02 +00:00
======================
2020-10-15 20:56:55 +00:00
Steps in this portion require special access to keys or
infrastructure. For example, **access to tahoe-lafs.org** to upload
binaries or edit HTML.
2020-10-15 20:57:55 +00:00
2020-10-15 20:56:55 +00:00
Hack Tahoe-LAFS
`` ` ` ` ` ` ` ` ` ` ` ` ``
Did anyone contribute a hack since the last release? If so, then
https://tahoe-lafs.org/hacktahoelafs/ needs to be updated.
2021-01-19 18:32:53 +00:00
Sign Git Tag
`` ` ` ` ` ` ` ` ` ``
- git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-X.Y.Z" tahoe-lafs-X.Y.Z
2020-10-15 20:56:55 +00:00
Upload Artifacts
`` ` ` ` ` ` ` ` ` ` ` ` ` ``
2024-12-19 05:37:16 +00:00
Any release plus signature (.asc file) need to be uploaded to
https://tahoe-lafs.org in `~source/downloads`
2020-10-15 20:56:55 +00:00
2020-10-15 21:02:50 +00:00
- secure-copy all release artifacts to the download area on the
tahoe-lafs.org host machine. `~source/downloads` on there maps to
2022-01-10 21:22:57 +00:00
https://tahoe-lafs.org/downloads/ on the Web:
2024-12-19 05:37:16 +00:00
- scp dist/*1.20.0* username@tahoe-lafs.org:/home/source/downloads
2022-01-10 18:49:02 +00:00
2020-10-15 21:02:50 +00:00
- the following developers have access to do this:
2021-01-05 02:19:40 +00:00
2020-10-15 21:02:50 +00:00
- exarkun
- meejah
- warner
2020-10-15 20:56:55 +00:00
2022-01-10 18:49:15 +00:00
Push the signed tag to the main repository:
2024-12-19 05:37:16 +00:00
- git push origin tahoe-lafs-1.20.0
2022-01-10 18:49:15 +00:00
2020-10-15 20:56:55 +00:00
For the actual release, the tarball and signature files need to be
2020-10-15 21:02:50 +00:00
uploaded to PyPI as well.
2020-10-15 20:56:55 +00:00
2024-12-19 05:37:16 +00:00
- ls dist/*1.20.0*
- twine upload --username __token__ --password `cat SECRET-pypi-tahoe-publish-token` dist/*1.20.0*
2024-01-19 00:32:18 +00:00
The following developers have access to do this:
2021-01-05 02:19:40 +00:00
2020-10-15 21:02:50 +00:00
- warner
2024-01-19 00:32:18 +00:00
- meejah
2020-10-30 00:50:44 +00:00
- exarkun (partial?)
2024-01-19 00:32:18 +00:00
2020-10-30 01:11:34 +00:00
2024-12-19 05:37:16 +00:00
Merge the Release Branch
2020-10-30 01:23:48 +00:00
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
2024-12-19 05:37:16 +00:00
Once the release has been signed and uploaded the release branch
should be merged to master (thus deleting newsfragments, etc).
2020-10-30 01:23:48 +00:00
2020-10-30 01:11:34 +00:00
Announcing the Release
2024-12-19 05:37:16 +00:00
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
The release-candidate should be announced by posting to the
mailing-list (tahoe-dev@lists.tahoe-lafs.org).
2020-10-30 01:11:34 +00:00
mailing-lists
`` ` ` ` ` ` ` ` ` ` ``
A new Tahoe release is traditionally announced on our mailing-list
2024-12-19 05:37:16 +00:00
(tahoe-dev@lists.tahoe-lafs.org). For example:
https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html
The former version of these instructions also announced the release on
the following other lists:
2020-10-30 01:11:34 +00:00
2020-10-30 01:23:48 +00:00
- tahoe-announce@tahoe-lafs.org
2020-10-30 01:11:34 +00:00
- twisted-python@twistedmatrix.com
- liberationtech@lists.stanford.edu
- lwn@lwn.net
- p2p-hackers@lists.zooko.com
- python-list@python.org
- http://listcultures.org/pipermail/p2presearch_listcultures.org/
- cryptopp-users@googlegroups.com
wiki
`` ``
Edit the "News" section of the front page of https://tahoe-lafs.org
with a link to the mailing-list archive of the announcement message.