source: trunk/docs/release-checklist.rst

Last change on this file was f1833906, checked in by meejah <meejah@…>, at 2024-01-19T00:32:18Z

details about how to publish

  • Property mode set to 100644
File size: 8.3 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 (e.g. ``XXXX.release-1.16.0``)
65- run tox -e news to produce a new NEWS.txt file (this does a commit)
66- create the news for the release
67
68  - newsfragments/<ticket number>.minor
69  - commit it
70
71- manually fix NEWS.txt
72
73  - proper title for latest release ("Release 1.16.0" instead of "Release ...post1432")
74  - double-check date (maybe release will be in the future)
75  - spot-check the release notes (these come from the newsfragments
76    files though so don't do heavy editing)
77  - commit these changes
78
79- update "relnotes.txt"
80
81  - update all mentions of ``1.16.0`` to new and higher release version for example ``1.16.1``
82  - update "previous release" statement and date
83  - summarize major changes
84  - commit it
85
86- update "nix/tahoe-lafs.nix"
87
88  - change the value given for `version` from `OLD.post1` to `NEW.post1`
89
90- update "docs/known_issues.rst" if appropriate
91- Push the branch to github
92- Create a (draft) PR; this should trigger CI (note that github
93  doesn't let you create a PR without some changes on the branch so
94  running + committing the NEWS.txt file achieves that without changing
95  any code)
96- Confirm CI runs successfully on all platforms
97
98
99Create Release Candidate
100````````````````````````
101
102Before "officially" tagging any release, we will make a
103release-candidate available. So there will be at least 1.15.0rc0 (for
104example). If there are any problems, an rc1 or rc2 etc may also be
105released. Anyone can sign these releases (ideally they'd be signed
106"officially" as well, but it's better to get them out than to wait for
107that).
108
109Typically expert users will be the ones testing release candidates and
110they will need to evaluate which contributors' signatures they trust.
111
112- (all steps above are completed)
113- sign the release
114
115  - git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-1.16.0rc0" tahoe-lafs-1.16.0rc0
116
117.. note:: 
118    - Replace the key-id above with your own, which can simply be your email if it's attached to your fingerprint.
119    - 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`` 
120
121- build all code locally
122
123  - these should all pass:
124
125    - tox -e py37,codechecks,docs,integration
126
127  - these can fail (ideally they should not of course):
128
129    - tox -e deprecations,upcoming-deprecations
130
131- clone to a clean, local checkout (to avoid extra files being included in the release)
132
133    - cd /tmp
134    - git clone /home/meejah/src/tahoe-lafs
135
136- build tarballs
137
138  - tox -e tarballs
139  - Confirm that release tarballs exist by runnig:
140
141    - ls dist/ | grep 1.16.0rc0
142
143- inspect and test the tarballs
144
145  - install each in a fresh virtualenv
146  - run `tahoe` command
147
148- when satisfied, sign the tarballs:
149
150  - gpg --pinentry=loopback --armor -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A --detach-sign dist/tahoe_lafs-1.16.0rc0-py2.py3-none-any.whl
151  - gpg --pinentry=loopback --armor --detach-sign dist/tahoe_lafs-1.16.0rc0.tar.gz
152
153
154Privileged Contributor
155======================
156
157Steps in this portion require special access to keys or
158infrastructure. For example, **access to tahoe-lafs.org** to upload
159binaries or edit HTML.
160
161
162Hack Tahoe-LAFS
163```````````````
164
165Did anyone contribute a hack since the last release? If so, then
166https://tahoe-lafs.org/hacktahoelafs/ needs to be updated.
167
168
169Sign Git Tag
170````````````
171
172- git tag -s -u 0xE34E62D06D0E69CFCA4179FFBDE0D31D68666A7A -m "release Tahoe-LAFS-X.Y.Z" tahoe-lafs-X.Y.Z
173
174
175Upload Artifacts
176````````````````
177
178Any release-candidate or actual release plus signature (.asc file)
179need to be uploaded to https://tahoe-lafs.org in `~source/downloads`
180
181- secure-copy all release artifacts to the download area on the
182  tahoe-lafs.org host machine. `~source/downloads` on there maps to
183  https://tahoe-lafs.org/downloads/ on the Web:
184
185    - scp dist/*1.15.0* username@tahoe-lafs.org:/home/source/downloads
186
187- the following developers have access to do this:
188
189  - exarkun
190  - meejah
191  - warner
192
193Push the signed tag to the main repository:
194
195- git push origin tahoe-lafs-1.17.1
196
197For the actual release, the tarball and signature files need to be
198uploaded to PyPI as well.
199
200- ls dist/*1.19.0*
201- twine upload --username __token__ --password `cat SECRET-pypi-tahoe-publish-token` dist/*1.19.0*
202
203The following developers have access to do this:
204
205  - warner
206  - meejah
207  - exarkun (partial?)
208
209
210Announcing the Release Candidate
211````````````````````````````````
212
213The release-candidate should be announced by posting to the
214mailing-list (tahoe-dev@lists.tahoe-lafs.org). For example:
215https://lists.tahoe-lafs.org/pipermail/tahoe-dev/2020-October/009978.html
216
217
218Is The Release Done Yet?
219````````````````````````
220
221If anyone reports a problem with a release-candidate then a new
222release-candidate should be made once a fix has been merged to
223master. Repeat the above instructions with `rc1` or `rc2` or whatever
224is appropriate.
225
226Once a release-candidate has marinated for some time then it can be
227made into a the actual release.
228
229The actual release follows the same steps as above, with some differences:
230
231- there is no "-rcX" on the end of release names
232- the release is uploaded to PyPI (using Twine)
233- the version is tagged in Git (ideally using "the tahoe release key"
234  but can be done with any of the authorized core developers' personal
235  key)
236- the release-candidate branches must be merged back to master after
237  the release is official (e.g. causing newsfragments to be deleted on
238  master, etc)
239
240
241Announcing the Release
242----------------------
243
244
245mailing-lists
246`````````````
247
248A new Tahoe release is traditionally announced on our mailing-list
249(tahoe-dev@tahoe-lafs.org). The former version of these instructions
250also announced the release on the following other lists:
251
252- tahoe-announce@tahoe-lafs.org
253- twisted-python@twistedmatrix.com
254- liberationtech@lists.stanford.edu
255- lwn@lwn.net
256- p2p-hackers@lists.zooko.com
257- python-list@python.org
258- http://listcultures.org/pipermail/p2presearch_listcultures.org/
259- cryptopp-users@googlegroups.com
260
261
262wiki
263````
264
265Edit the "News" section of the front page of https://tahoe-lafs.org
266with a link to the mailing-list archive of the announcement message.
Note: See TracBrowser for help on using the repository browser.