tahoe-lafs/docs/release-checklist.rst

223 lines
6.5 KiB
ReStructuredText
Raw Normal View History

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
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.
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
===============
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
```````````````````````
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
- 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
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
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).
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
practice to give it the release name. You MAY also discard this directory once the release
process is complete.
2024-12-13 01:28:17 +00:00
Get into the release directory and install dependencies by running:
- cd ../tahoe-release-x.x.x (assuming you are still in your original clone)
- python -m venv venv
- ./venv/bin/pip install --editable .[test]
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
2024-12-13 01:28:17 +00:00
- manually fix ``NEWS.txt``:
- 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
2024-12-13 01:28:17 +00:00
- update ``relnotes.txt``:
- 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
2024-12-13 01:28:17 +00:00
- update ``nix/tahoe-lafs.nix``:
- 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
Create The Release
``````````````````
2020-10-15 20:56:55 +00:00
- build all code locally
2020-10-15 20:56:55 +00:00
- these should all pass:
- tox -e py311,codechecks,docs,integration
2020-10-15 20:56:55 +00:00
- these can fail (ideally they should not of course):
- tox -e deprecations,upcoming-deprecations
- install build dependencies
2022-01-10 18:48:55 +00:00
- pip install -e .[build]
- build tarball + wheel (should be built into dist/)
- hatchling build
2020-10-15 20:56:55 +00:00
- inspect and test the tarballs
- install each in a fresh virtualenv
- run `tahoe` command
2020-10-15 20:56:55 +00:00
- when satisfied, sign the tarballs:
- 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
======================
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.
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 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:
- 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:
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:
- 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
- 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:
2020-10-15 21:02:50 +00:00
- warner
2024-01-19 00:32:18 +00:00
- meejah
- exarkun (partial?)
2024-01-19 00:32:18 +00:00
2020-10-30 01:11:34 +00:00
Merge the Release Branch
2020-10-30 01:23:48 +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
``````````````````````
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
(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.