@@ -146,19 +146,17 @@ release. The roles and their current experts are:
146
146
In rare cases where the expert for Windows or Mac is MIA, you may add
147
147
a message "(Platform) binaries will be provided shortly" and proceed.
148
148
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
-
153
149
We use the following conventions in the examples below. Where a release
154
150
number is given, it is of the form ``3.X.YaN ``, e.g. 3.13.0a3 for Python 3.13.0
155
151
alpha 3, where "a" == alpha, "b" == beta, "rc" == release candidate.
156
152
157
153
Release tags are named ``v3.X.YaN ``. The branch name for minor release
158
154
maintenance branches is ``3.X ``.
159
155
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.
162
160
163
161
- Log into Discord and join the Python Core Devs server. Ask Thomas
164
162
or Łukasz for an invite.
@@ -287,55 +285,34 @@ to perform some manual editing steps.
287
285
- For **begin security-only mode ** and **end-of-life ** releases, review the
288
286
two files and update the versions accordingly in all active branches.
289
287
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::
303
289
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
308
295
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:
320
300
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).
323
306
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.
325
310
326
311
If the tests pass, then you can feel good that the tarball is
327
312
fine. If some of the tests fail, or anything else about the
328
313
freshly unpacked directory looks weird, you better stop now and
329
314
figure out what the problem is.
330
315
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
-
339
316
- Notify the experts that they can start building binaries.
340
317
341
318
.. warning ::
@@ -374,8 +351,9 @@ to perform some manual editing steps.
374
351
- The ME builds Mac installer packages and uploads them to
375
352
downloads.nyc1.psf.io together with GPG signature files.
376
353
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.
379
357
380
358
While you're waiting for the files to finish uploading, you can continue
381
359
on with the remaining tasks. You can also ask folks on Discord
@@ -390,8 +368,8 @@ to perform some manual editing steps.
390
368
creating it if necessary. Make sure it is owned by group ``downloads ``
391
369
and group-writable.
392
370
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
395
373
by the experts themselves.
396
374
397
375
Make sure they are world readable. They should also be group
0 commit comments