@@ -146,19 +146,17 @@ release. The roles and their current experts are:
146146 In rare cases where the expert for Windows or Mac is MIA, you may add
147147 a message "(Platform) binaries will be provided shortly" and proceed.
148148
149- As much as possible, the release steps are automated and guided by the
150- release script, which is available in a separate repository:
151- `python/release-tools `_.
152-
153149We use the following conventions in the examples below. Where a release
154150number is given, it is of the form ``3.X.YaN ``, e.g. 3.13.0a3 for Python 3.13.0
155151alpha 3, where "a" == alpha, "b" == beta, "rc" == release candidate.
156152
157153Release tags are named ``v3.X.YaN ``. The branch name for minor release
158154maintenance branches is ``3.X ``.
159155
160- This helps by performing several automatic editing steps, and guides you
161- to perform some manual editing steps.
156+ As much as possible, the release is automated and guided by the
157+ ``run_release.py `` script, which is available in a separate repository:
158+ `python/release-tools `_. This helps by automating many of the following steps,
159+ and guides you to perform some manual steps.
162160
163161- Log into Discord and join the Python Core Devs server. Ask Thomas
164162 or Łukasz for an invite.
@@ -287,55 +285,34 @@ to perform some manual editing steps.
287285- For **begin security-only mode ** and **end-of-life ** releases, review the
288286 two files and update the versions accordingly in all active branches.
289287
290- - Time to build the source tarball. Use the release script to create
291- the source gzip and xz tarballs,
292- documentation tar and zip files, and GPG signature files::
293-
294- .../release-tools/release.py --export 3.X.YaN
295-
296- This can take a while for **final ** releases, and it will leave all the
297- tarballs and signatures in a subdirectory called ``3.X.YaN/src ``, and the
298- built docs in ``3.X.YaN/docs `` (for **final ** releases).
288+ - Push your commits to the remote release branch in your GitHub fork::
299289
300- Note that the script will sign your release with Sigstore. Use
301- your **@python.org ** email address for this. See here for more information:
302- https://www.python.org/download/sigstore/.
290+ # Do a dry run first.
291+ git push --dry-run --tags origin
292+ # Make sure you are pushing to your GitHub fork,
293+ # *not* to the main python/cpython repo!
294+ git push --tags origin
303295
304- - Now you want to perform the very important step of checking the
305- tarball you just created, to make sure a completely clean,
306- virgin build passes the regression test. Here are the best
307- steps to take: :
296+ - In ` python/release-tools `_, go to the ` build-release
297+ <https://github.com/python/release-tools/actions/workflows/build-release.yml> `__
298+ workflow, select "Run workflow", and enter the details of the tag you just
299+ created. This will perform the following steps :
308300
309- cd /tmp
310- tar xvf /path/to/your/release/clone/<version>//Python-3.2rc2.tgz
311- cd Python-3.2rc2
312- ls
313- # (Do things look reasonable?)
314- ls Lib
315- # (Are there stray .pyc files?)
316- ./configure
317- # (Loads of configure output)
318- make test
319- # (Do all the expected tests pass?)
301+ - Create the source gzip and xz tarballs.
302+ - Create the documentation tar and zip files.
303+ - Check the source tarball to make sure a completely clean, virgin build
304+ passes the regression test.
305+ - Build and test the Android binaries (if Python 3.14 or later).
320306
321- If you're feeling lucky and have some time to kill, or if you are making
322- a release candidate or **final ** release, run the full test suite::
323-
324- make buildbottest
307+ The resulting artifacts will be attached to the summary page of the GitHub
308+ workflow. Once the source tarball is available, download and unpack it to make
309+ sure things look reasonable, there are no stray .pyc files, etc.
325310
326311 If the tests pass, then you can feel good that the tarball is
327312 fine. If some of the tests fail, or anything else about the
328313 freshly unpacked directory looks weird, you better stop now and
329314 figure out what the problem is.
330315
331- - Push your commits to the remote release branch in your GitHub fork::
332-
333- # Do a dry run first.
334- git push --dry-run --tags origin
335- # Make sure you are pushing to your GitHub fork,
336- # *not* to the main python/cpython repo!
337- git push --tags origin
338-
339316- Notify the experts that they can start building binaries.
340317
341318.. warning ::
@@ -374,7 +351,7 @@ to perform some manual editing steps.
374351- The ME builds Mac installer packages and uploads them to
375352 downloads.nyc1.psf.io together with GPG signature files.
376353
377- - ``scp `` or ``rsync `` all the files built by `` release.py --export ``
354+ - ``scp `` or ``rsync `` all the files built by the build-release workflow
378355 to your home directory on ``downloads.nyc1.psf.io ``.
379356
380357 While you're waiting for the files to finish uploading, you can continue
@@ -390,9 +367,12 @@ to perform some manual editing steps.
390367 creating it if necessary. Make sure it is owned by group ``downloads ``
391368 and group-writable.
392369
393- - Move the release ``.tgz ``, and ``.tar.xz `` files into place, as well as the
394- ``.asc `` GPG signature files. The Win/Mac binaries are usually put there
395- by the experts themselves.
370+ - Move the following files into place:
371+
372+ - The ``.tgz ``, and ``.tar.xz `` source tarballs, as well as their ``.asc ``
373+ GPG signature files.
374+ - The Android binaries (if Python 3.14 or later).
375+ - The Win/Mac binaries are usually put there by the experts themselves.
396376
397377 Make sure they are world readable. They should also be group
398378 writable, and group-owned by ``downloads ``.
0 commit comments