4343    if : fromJSON(needs.build-context.outputs.run-docs) 
4444    uses : ./.github/workflows/reusable-docs.yml 
4545
46-   check_autoconf_regen :
46+   check-autoconf-regen :
4747    name : ' Check if Autoconf files are up to date' 
4848    #  Don't use ubuntu-latest but a specific version to make the job
4949    #  reproducible: to get the same tools versions (autoconf, aclocal, ...)
8686            exit 1 
8787          fi 
8888
89- check_generated_files :
89+ check-generated-files :
9090    name : ' Check if generated files are up to date' 
9191    #  Don't use ubuntu-latest but a specific version to make the job
9292    #  reproducible: to get the same tools versions (autoconf, aclocal, ...)
@@ -147,7 +147,7 @@ jobs:
147147        if : github.event_name == 'pull_request'   #  $GITHUB_EVENT_NAME
148148        run : make check-c-globals 
149149
150-   build_windows :
150+   build-windows :
151151    name : >- 
152152      Windows 
153153      ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
@@ -179,12 +179,13 @@ jobs:
179179      arch : ${{ matrix.arch }} 
180180      free-threading : ${{ matrix.free-threading }} 
181181
182-   build_windows_msi :
182+   build-windows-msi :
183183    name : >-  #  ${{ '' } is a hack to nest jobs under the same sidebar category 
184184      Windows MSI${{ '' }} 
185185needs : build-context 
186186    if : fromJSON(needs.build-context.outputs.run-windows-msi) 
187187    strategy :
188+       fail-fast : false 
188189      matrix :
189190        arch :
190191        - x86 
@@ -194,7 +195,7 @@ jobs:
194195    with :
195196      arch : ${{ matrix.arch }} 
196197
197-   build_macos :
198+   build-macos :
198199    name : >- 
199200      macOS 
200201      ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
@@ -228,14 +229,15 @@ jobs:
228229      free-threading : ${{ matrix.free-threading }} 
229230      os : ${{ matrix.os }} 
230231
231-   build_ubuntu :
232+   build-ubuntu :
232233    name : >- 
233234      Ubuntu 
234235      ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
235236      ${{ fromJSON(matrix.bolt) && '(bolt)' || '' }} 
236237needs : build-context 
237238    if : needs.build-context.outputs.run-tests == 'true' 
238239    strategy :
240+       fail-fast : false 
239241      matrix :
240242        bolt :
241243        - false 
@@ -245,13 +247,13 @@ jobs:
245247        - true 
246248        os :
247249        - ubuntu-24.04 
248-         - ubuntu-22 .04-arm 
250+         - ubuntu-24 .04-arm 
249251        exclude :
250252        #  Do not test BOLT with free-threading, to conserve resources
251253        - bolt : true 
252254          free-threading : true 
253255        #  BOLT currently crashes during instrumentation on aarch64
254-         - os : ubuntu-22 .04-arm 
256+         - os : ubuntu-24 .04-arm 
255257          bolt : true 
256258    uses : ./.github/workflows/reusable-ubuntu.yml 
257259    with :
@@ -260,7 +262,7 @@ jobs:
260262      free-threading : ${{ matrix.free-threading }} 
261263      os : ${{ matrix.os }} 
262264
263-   build_ubuntu_ssltests :
265+   build-ubuntu-ssltests :
264266    name : ' Ubuntu SSL tests with OpenSSL' 
265267    runs-on : ${{ matrix.os }} 
266268    timeout-minutes : 60 
@@ -322,15 +324,15 @@ jobs:
322324    - name : SSL tests 
323325      run : ./python Lib/test/ssltests.py 
324326
325-   build_wasi :
327+   build-wasi :
326328    name : ' WASI' 
327329    needs : build-context 
328330    if : needs.build-context.outputs.run-tests == 'true' 
329331    uses : ./.github/workflows/reusable-wasi.yml 
330332    with :
331333      config_hash : ${{ needs.build-context.outputs.config-hash }} 
332334
333-   test_hypothesis :
335+   test-hypothesis :
334336    name : " Hypothesis tests on Ubuntu" 
335337    runs-on : ubuntu-24.04 
336338    timeout-minutes : 60 
@@ -445,14 +447,14 @@ jobs:
445447        name : hypothesis-example-db 
446448        path : ${{ env.CPYTHON_BUILDDIR }}/.hypothesis/examples/ 
447449
448- 
449-   build_asan :
450+   build-asan :
450451    name : ' Address sanitizer' 
451452    runs-on : ${{ matrix.os }} 
452453    timeout-minutes : 60 
453454    needs : build-context 
454455    if : needs.build-context.outputs.run-tests == 'true' 
455456    strategy :
457+       fail-fast : false 
456458      matrix :
457459        os : [ubuntu-24.04] 
458460    env :
@@ -509,13 +511,14 @@ jobs:
509511    - name : Tests 
510512      run : xvfb-run make ci 
511513
512-   build_tsan :
514+   build-tsan :
513515    name : >- 
514516      Thread sanitizer 
515517      ${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }} 
516518needs : build-context 
517519    if : needs.build-context.outputs.run-tests == 'true' 
518520    strategy :
521+       fail-fast : false 
519522      matrix :
520523        free-threading :
521524        - false 
@@ -528,6 +531,7 @@ jobs:
528531  cross-build-linux :
529532    name : Cross build Linux 
530533    runs-on : ubuntu-latest 
534+     timeout-minutes : 60 
531535    needs : build-context 
532536    if : needs.build-context.outputs.run-tests == 'true' 
533537    steps :
@@ -592,8 +596,8 @@ jobs:
592596          output-sarif : true 
593597          sanitizer : ${{ matrix.sanitizer }} 
594598      - name : Upload crash 
595-         uses : actions/upload-artifact@v4 
596599        if : failure() && steps.build.outcome == 'success' 
600+         uses : actions/upload-artifact@v4 
597601        with :
598602          name : ${{ matrix.sanitizer }}-artifacts 
599603          path : ./out/artifacts 
@@ -606,36 +610,35 @@ jobs:
606610
607611  all-required-green :  #  This job does nothing and is only used for the branch protection
608612    name : All required checks pass 
609-     if :  always() 
610- 
613+     runs-on :  ubuntu-latest 
614+      timeout-minutes :  5 
611615    needs :
612616    - build-context   #  Transitive dependency, needed to access `run-tests` value
613617    - check-docs 
614-     - check_autoconf_regen 
615-     - check_generated_files 
616-     - build_macos 
617-     - build_ubuntu 
618-     - build_ubuntu_ssltests 
619-     - build_wasi 
620-     - build_windows 
621-     - build_windows_msi 
618+     - check-autoconf-regen 
619+     - check-generated-files 
620+     - build-windows 
621+     - build-windows-msi 
622+     - build-macos 
623+     - build-ubuntu 
624+     - build-ubuntu-ssltests 
625+     - build-wasi 
626+     - test-hypothesis 
627+     - build-asan 
628+     - build-tsan 
622629    - cross-build-linux 
623-     - test_hypothesis 
624-     - build_asan 
625-     - build_tsan 
626630    - cifuzz 
627- 
628-     runs-on : ubuntu-latest 
631+     if : always() 
629632
630633    steps :
631634    - name : Check whether the needed jobs succeeded or failed 
632635      uses : re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe 
633636      with :
634637        allowed-failures : >- 
635-           build_ubuntu_ssltests, 
636-           build_windows_msi, 
638+           build-windows-msi, 
639+           build-ubuntu-ssltests, 
640+           test-hypothesis, 
637641          cifuzz, 
638-           test_hypothesis, 
639642allowed-skips : >- 
640643          ${{ 
641644            !fromJSON(needs.build-context.outputs.run-docs) 
@@ -647,23 +650,23 @@ jobs:
647650          ${{ 
648651            needs.build-context.outputs.run-tests != 'true' 
649652            && ' 
650-             check_autoconf_regen , 
651-             check_generated_files , 
652-             build_macos , 
653-             build_ubuntu , 
654-             build_ubuntu_ssltests , 
655-             build_wasi , 
656-             build_asan , 
657-             build_tsan , 
658-             test_hypothesis , 
653+             check-autoconf-regen , 
654+             check-generated-files , 
655+             build-macos , 
656+             build-ubuntu , 
657+             build-ubuntu-ssltests , 
658+             build-wasi , 
659+             test-hypothesis , 
660+             build-asan , 
661+             build-tsan , 
659662            cross-build-linux, 
660663            ' 
661664            || '' 
662665          }} 
663666          ${{ 
664667            !fromJSON(needs.build-context.outputs.run-windows-tests) 
665668            && ' 
666-             build_windows , 
669+             build-windows , 
667670            ' 
668671            || '' 
669672          }} 
0 commit comments