source: trunk/docs/release-checklist.rst

Last change on this file was 6ba54b8, checked in by meejah <meejah@…>, at 2024-12-19T05:37:16Z

update release procedure to reflect reality

  • Property mode set to 100644
File size: 6.5 KB
Line 
1
2=================
3Release Checklist
4=================
5
6This release checklist specifies a series of checks that anyone engaged in
7releasing a version of Tahoe should follow.
8
9Any contributor can do the first part of the release preparation. Only
10certain contributors can perform other parts. These are the two main
11sections of this checklist (and could be done by different people).
12
13A final section describes how to announce the release.
14
15This checklist is based on the original instructions (in old revisions in the file
16`docs/how_to_make_a_tahoe-lafs_release.org`).
17
18
19Any Contributor
20===============
21
22Anyone who can create normal PRs should be able to complete this
23portion of the release process.
24
25
26Prepare for the Release
27```````````````````````
28
29The `master` branch should always be releasable.
30
31It may be worth asking (on IRC or mailing-ist) if anything will be
32merged imminently (for example, "I will prepare a release this coming
33Tuesday if you want to get anything in").
34
35- Create a ticket for the release in Trac
36- Ticket number needed in next section
37- Making first release? See `GPG Setup Instructions <gpg-setup.rst>`__ to make sure you can sign releases. [One time setup]
38
39Get a clean checkout
40````````````````````
41
42The release proccess involves compressing source files and putting them in formats
43suitable for distribution such as ``.tar.gz`` and ``zip``. That said, it's neccesary to
44the release process begins with a clean checkout to avoid making a release with
45previously generated files.
46
47- 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).
48
49.. note::
50     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
51     practice to give it the release name. You MAY also discard this directory once the release
52     process is complete.
53
54Get into the release directory and install dependencies by running:
55
56- cd ../tahoe-release-x.x.x (assuming you are still in your original clone)
57- python -m venv venv
58- ./venv/bin/pip install --editable .[test]
59
60
61Create Branch and Apply Updates
62```````````````````````````````
63
64- Create a branch for the release/candidate: git checkout -b XXXX.release-1.16.0
65- produce a new NEWS.txt file (this does a commit): tox -e news
66- create the news for the release:
67  - touch newsfragments/<ticket number>.minor
68  - git add newsfragments/<ticket number>.minor
69  - git commit -m news
70
71- manually fix ``NEWS.txt``:
72  - proper title for latest release ("Release 1.16.0" instead of "Release ...post1432")
73  - double-check date (maybe release will be in the future)
74  - spot-check the release notes (these come from the newsfragments files though so don't do heavy editing)
75  - commit these changes
76
77- update ``relnotes.txt``:
78  - update all mentions of ``1.16.0`` to new and higher release version for example ``1.16.1``
79  - update "previous release" statement and date
80  - summarize major changes
81  - commit it
82
83- update ``nix/tahoe-lafs.nix``:
84  - change the value given for `version` from `OLD.post1` to `NEW.post1`
85
86- update ``docs/known_issues.rst`` if appropriate
87- Push the branch to github
88
89- Create a (draft) PR; this should trigger CI (note that github
90  doesn't let you create a PR without some changes on the branch so
91  running + committing the NEWS.txt file achieves that without changing
92  any code)
93- Confirm CI runs successfully on all platforms
94
95
96Create The Release
97``````````````````
98
99- build all code locally
100
101  - these should all pass:
102
103    - tox -e py311,codechecks,docs,integration
104
105  - these can fail (ideally they should not of course):
106
107    - tox -e deprecations,upcoming-deprecations
108
109- install build dependencies
110
111    - pip install -e .[build]
112
113- build tarball + wheel (should be built into dist/)
114
115    - hatchling build
116
117- inspect and test the tarballs
118
119    - install each in a fresh virtualenv
120    - run `tahoe` command
121
122- when satisfied, sign the tarballs:
123
124  - gpg --pinentry=loopback --armor -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A --detach-sign dist/tahoe_lafs-1.20.0rc0-py2.py3-none-any.whl
125  - gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.20.0rc0.tar.gz
126
127
128Privileged Contributor
129======================
130
131Steps in this portion require special access to keys or
132infrastructure. For example, **access to tahoe-lafs.org** to upload
133binaries or edit HTML.
134
135
136Hack Tahoe-LAFS
137```````````````
138
139Did anyone contribute a hack since the last release? If so, then
140https://tahoe-lafs.org/hacktahoelafs/ needs to be updated.
141
142
143Sign Git Tag
144````````````
145
146- git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-X.Y.Z" tahoe-lafs-X.Y.Z
147
148
149Upload Artifacts
150````````````````
151
152Any release plus signature (.asc file) need to be uploaded to
153https://tahoe-lafs.org in `~source/downloads`
154
155- secure-copy all release artifacts to the download area on the
156  tahoe-lafs.org host machine. `~source/downloads` on there maps to
157  https://tahoe-lafs.org/downloads/ on the Web:
158
159    - scp dist/*1.20.0* username@tahoe-lafs.org:/home/source/downloads
160
161- the following developers have access to do this:
162
163  - exarkun
164  - meejah
165  - warner
166
167Push the signed tag to the main repository:
168
169- git push origin tahoe-lafs-1.20.0
170
171For the actual release, the tarball and signature files need to be
172uploaded to PyPI as well.
173
174- ls dist/*1.20.0*
175- twine upload --username __token__ --password `cat SECRET-pypi-tahoe-publish-token` dist/*1.20.0*
176
177The following developers have access to do this:
178
179  - warner
180  - meejah
181  - exarkun (partial?)
182
183
184Merge the Release Branch
185````````````````````````
186
187Once the release has been signed and uploaded the release branch
188should be merged to master (thus deleting newsfragments, etc).
189
190
191Announcing the Release
192``````````````````````
193
194The release-candidate should be announced by posting to the
195mailing-list (tahoe-dev@lists.tahoe-lafs.org).
196
197
198mailing-lists
199`````````````
200
201A new Tahoe release is traditionally announced on our mailing-list
202(tahoe-dev@lists.tahoe-lafs.org).  For example:
203https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html
204
205The former version of these instructions also announced the release on
206the following other lists:
207
208- tahoe-announce@tahoe-lafs.org
209- twisted-python@twistedmatrix.com
210- liberationtech@lists.stanford.edu
211- lwn@lwn.net
212- p2p-hackers@lists.zooko.com
213- python-list@python.org
214- http://listcultures.org/pipermail/p2presearch_listcultures.org/
215- cryptopp-users@googlegroups.com
216
217
218wiki
219````
220
221Edit the "News" section of the front page of https://tahoe-lafs.org
222with a link to the mailing-list archive of the announcement message.
Note: See TracBrowser for help on using the repository browser.