2020-10-15 20:56:55 +00:00
=================
Release Checklist
=================
2021-10-28 07:26:13 +00:00
This release checklist specifies a series of checks that anyone engaged in
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
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
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
the release process begins with a clean checkout to avoid making a release with
previously generated files.
- 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-11-20 17:26:02 +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
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
2021-11-18 10:46:01 +00:00
Get into the release directory and install dependencies by running
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
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
2021-10-30 12:37:58 +00:00
- Create a branch for the release/candidate (e.g. `` XXXX.release-1.16.0 `` )
2022-02-02 00:33:22 +00:00
- run tox -e news to produce a new NEWS.txt file (this does a commit)
2020-10-15 20:56:55 +00:00
- create the news for the release
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- newsfragments/<ticket number>.minor
- commit it
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- manually fix NEWS.txt
2021-01-05 02:19:40 +00:00
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)
2020-10-15 20:56:55 +00:00
- spot-check the release notes (these come from the newsfragments
files though so don't do heavy editing)
- commit these changes
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- update "relnotes.txt"
2021-01-05 02:19:40 +00:00
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
2021-05-12 13:52:13 +00:00
- update "nix/tahoe-lafs.nix"
- change the value given for `version` from `OLD.post1` to `NEW.post1`
2020-10-15 20:56:55 +00:00
- update "docs/known_issues.rst" if appropriate
- Push the branch to github
- 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
Create Release Candidate
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
Before "officially" tagging any release, we will make a
release-candidate available. So there will be at least 1.15.0rc0 (for
example). If there are any problems, an rc1 or rc2 etc may also be
released. Anyone can sign these releases (ideally they'd be signed
"officially" as well, but it's better to get them out than to wait for
that).
Typically expert users will be the ones testing release candidates and
2020-10-30 01:11:34 +00:00
they will need to evaluate which contributors' signatures they trust.
2020-10-15 20:56:55 +00:00
- (all steps above are completed)
- sign the release
2021-01-05 02:19:40 +00:00
2022-02-02 00:33:22 +00:00
- git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-1.16.0rc0" tahoe-lafs-1.16.0rc0
2021-10-30 12:32:42 +00:00
2021-11-20 17:26:02 +00:00
.. note ::
2021-12-06 21:51:44 +00:00
- Replace the key-id above with your own, which can simply be your email if it's attached to your fingerprint.
- Don't forget to put the correct tag message and name. In this example, the tag message is "release Tahoe-LAFS-1.16.0rc0" and the tag name is `` tahoe-lafs-1.16.0rc0 ``
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
2022-02-15 19:33:00 +00:00
- tox -e py37,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
2022-01-10 18:48:55 +00:00
- clone to a clean, local checkout (to avoid extra files being included in the release)
- cd /tmp
- git clone /home/meejah/src/tahoe-lafs
2020-10-15 20:56:55 +00:00
- build tarballs
2021-01-05 02:19:40 +00:00
2020-10-15 20:56:55 +00:00
- tox -e tarballs
2021-11-18 10:46:01 +00:00
- Confirm that release tarballs exist by runnig:
2022-02-02 00:33:22 +00:00
- ls dist/ | grep 1.16.0rc0
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
2020-10-15 20:56:55 +00:00
- install each in a fresh virtualenv
2020-10-30 01:01:26 +00:00
- 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
2022-02-02 00:33:22 +00:00
- gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.16.0rc0-py2.py3-none-any.whl
- gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.16.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
`` ` ` ` ` ` ` ` ` ` ` ` ` ``
Any release-candidate or actual release plus signature (.asc file)
2020-10-30 00:50:29 +00:00
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:
2022-01-10 18:49:02 +00:00
- scp dist/*1.15.0* username@tahoe-lafs.org:/home/source/downloads
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:
2022-01-10 21:17:50 +00:00
- git push origin tahoe-lafs-1.17.1
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
- how to do this?
2021-01-05 02:21:43 +00:00
- (original guide says only `twine upload dist/*` )
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
- warner
2020-10-30 00:50:44 +00:00
- exarkun (partial?)
- meejah (partial?)
2020-10-30 01:11:34 +00:00
2020-10-30 01:23:48 +00:00
Announcing the Release Candidate
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
The release-candidate should be announced by posting to the
2021-08-31 13:58:43 +00:00
mailing-list (tahoe-dev@lists.tahoe-lafs.org). For example:
https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html
2020-10-30 01:23:48 +00:00
Is The Release Done Yet?
`` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``
If anyone reports a problem with a release-candidate then a new
release-candidate should be made once a fix has been merged to
master. Repeat the above instructions with `rc1` or `rc2` or whatever
is appropriate.
Once a release-candidate has marinated for some time then it can be
made into a the actual release.
2021-05-11 17:53:11 +00:00
The actual release follows the same steps as above, with some differences:
- there is no "-rcX" on the end of release names
- the release is uploaded to PyPI (using Twine)
- the version is tagged in Git (ideally using "the tahoe release key"
but can be done with any of the authorized core developers' personal
key)
- the release-candidate branches must be merged back to master after
the release is official (e.g. causing newsfragments to be deleted on
master, etc)
2020-10-30 01:23:48 +00:00
2020-10-30 01:11:34 +00:00
Announcing the Release
----------------------
mailing-lists
`` ` ` ` ` ` ` ` ` ` ``
A new Tahoe release is traditionally announced on our mailing-list
(tahoe-dev@tahoe-lafs.org). The former version of these instructions
also announced the release on the following other lists:
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.