@@ -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).
299-
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/.
288+ - Push your commits to the remote release branch in your GitHub fork::
303289
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::
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
308295
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?)
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:
320300
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::
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).
323306
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,8 +351,9 @@ 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 ``
378- to your home directory on ``downloads.nyc1.psf.io ``.
354+ - ``scp `` or ``rsync `` all the files built by the build-release workflow
355+ to your home directory on ``downloads.nyc1.psf.io ``, along with any
356+ signatures, SBOMs, etc.
379357
380358 While you're waiting for the files to finish uploading, you can continue
381359 on with the remaining tasks. You can also ask folks on Discord
@@ -390,8 +368,8 @@ to perform some manual editing steps.
390368 creating it if necessary. Make sure it is owned by group ``downloads ``
391369 and group-writable.
392370
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
371+ - Take the files you uploaded to your home directory above, and move them
372+ into the release directory. The Win/Mac binaries are usually put there
395373 by the experts themselves.
396374
397375 Make sure they are world readable. They should also be group
0 commit comments