43
43
if : fromJSON(needs.build-context.outputs.run-docs)
44
44
uses : ./.github/workflows/reusable-docs.yml
45
45
46
- check_autoconf_regen :
46
+ check-autoconf-regen :
47
47
name : ' Check if Autoconf files are up to date'
48
48
# Don't use ubuntu-latest but a specific version to make the job
49
49
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
86
86
exit 1
87
87
fi
88
88
89
- check_generated_files :
89
+ check-generated-files :
90
90
name : ' Check if generated files are up to date'
91
91
# Don't use ubuntu-latest but a specific version to make the job
92
92
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
@@ -147,7 +147,7 @@ jobs:
147
147
if : github.event_name == 'pull_request' # $GITHUB_EVENT_NAME
148
148
run : make check-c-globals
149
149
150
- build_windows :
150
+ build-windows :
151
151
name : >-
152
152
Windows
153
153
${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
@@ -164,10 +164,12 @@ jobs:
164
164
- false
165
165
- true
166
166
include :
167
- - os : windows-latest # FIXME(diegorusso): change to os: windows-aarch64
167
+ # Forks don't have access to Windows on Arm runners. These jobs are skipped below:
168
+ - os : ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }}
168
169
arch : arm64
169
170
free-threading : false
170
- - os : windows-latest # FIXME(diegorusso): change to os: windows-aarch64
171
+ # Forks don't have access to Windows on Arm runners. These jobs are skipped below:
172
+ - os : ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }}
171
173
arch : arm64
172
174
free-threading : true
173
175
- os : windows-latest
@@ -179,22 +181,29 @@ jobs:
179
181
arch : ${{ matrix.arch }}
180
182
free-threading : ${{ matrix.free-threading }}
181
183
182
- build_windows_msi :
184
+ build-windows-msi :
183
185
name : >- # ${{ '' } is a hack to nest jobs under the same sidebar category
184
186
Windows MSI${{ '' }}
185
187
needs : build-context
186
188
if : fromJSON(needs.build-context.outputs.run-windows-msi)
187
189
strategy :
190
+ fail-fast : false
188
191
matrix :
192
+ os :
193
+ - windows-latest
189
194
arch :
190
195
- x86
191
196
- x64
192
- - arm64
197
+ include :
198
+ # Forks don't have access to Windows on Arm runners. These jobs are skipped below:
199
+ - os : ${{ github.repository_owner == 'python' && 'windows-aarch64' || 'windows-latest' }}
200
+ arch : arm64
193
201
uses : ./.github/workflows/reusable-windows-msi.yml
194
202
with :
203
+ os : ${{ matrix.os }}
195
204
arch : ${{ matrix.arch }}
196
205
197
- build_macos :
206
+ build-macos :
198
207
name : >-
199
208
macOS
200
209
${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
@@ -228,14 +237,15 @@ jobs:
228
237
free-threading : ${{ matrix.free-threading }}
229
238
os : ${{ matrix.os }}
230
239
231
- build_ubuntu :
240
+ build-ubuntu :
232
241
name : >-
233
242
Ubuntu
234
243
${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
235
244
${{ fromJSON(matrix.bolt) && '(bolt)' || '' }}
236
245
needs : build-context
237
246
if : needs.build-context.outputs.run-tests == 'true'
238
247
strategy :
248
+ fail-fast : false
239
249
matrix :
240
250
bolt :
241
251
- false
@@ -245,13 +255,13 @@ jobs:
245
255
- true
246
256
os :
247
257
- ubuntu-24.04
248
- - ubuntu-22 .04-arm
258
+ - ubuntu-24 .04-arm
249
259
exclude :
250
260
# Do not test BOLT with free-threading, to conserve resources
251
261
- bolt : true
252
262
free-threading : true
253
263
# BOLT currently crashes during instrumentation on aarch64
254
- - os : ubuntu-22 .04-arm
264
+ - os : ubuntu-24 .04-arm
255
265
bolt : true
256
266
uses : ./.github/workflows/reusable-ubuntu.yml
257
267
with :
@@ -260,7 +270,7 @@ jobs:
260
270
free-threading : ${{ matrix.free-threading }}
261
271
os : ${{ matrix.os }}
262
272
263
- build_ubuntu_ssltests :
273
+ build-ubuntu-ssltests :
264
274
name : ' Ubuntu SSL tests with OpenSSL'
265
275
runs-on : ${{ matrix.os }}
266
276
timeout-minutes : 60
@@ -322,15 +332,15 @@ jobs:
322
332
- name : SSL tests
323
333
run : ./python Lib/test/ssltests.py
324
334
325
- build_wasi :
335
+ build-wasi :
326
336
name : ' WASI'
327
337
needs : build-context
328
338
if : needs.build-context.outputs.run-tests == 'true'
329
339
uses : ./.github/workflows/reusable-wasi.yml
330
340
with :
331
341
config_hash : ${{ needs.build-context.outputs.config-hash }}
332
342
333
- test_hypothesis :
343
+ test-hypothesis :
334
344
name : " Hypothesis tests on Ubuntu"
335
345
runs-on : ubuntu-24.04
336
346
timeout-minutes : 60
@@ -445,14 +455,14 @@ jobs:
445
455
name : hypothesis-example-db
446
456
path : ${{ env.CPYTHON_BUILDDIR }}/.hypothesis/examples/
447
457
448
-
449
- build_asan :
458
+ build-asan :
450
459
name : ' Address sanitizer'
451
460
runs-on : ${{ matrix.os }}
452
461
timeout-minutes : 60
453
462
needs : build-context
454
463
if : needs.build-context.outputs.run-tests == 'true'
455
464
strategy :
465
+ fail-fast : false
456
466
matrix :
457
467
os : [ubuntu-24.04]
458
468
env :
@@ -509,13 +519,14 @@ jobs:
509
519
- name : Tests
510
520
run : xvfb-run make ci
511
521
512
- build_tsan :
522
+ build-tsan :
513
523
name : >-
514
524
Thread sanitizer
515
525
${{ fromJSON(matrix.free-threading) && '(free-threading)' || '' }}
516
526
needs : build-context
517
527
if : needs.build-context.outputs.run-tests == 'true'
518
528
strategy :
529
+ fail-fast : false
519
530
matrix :
520
531
free-threading :
521
532
- false
@@ -528,6 +539,7 @@ jobs:
528
539
cross-build-linux :
529
540
name : Cross build Linux
530
541
runs-on : ubuntu-latest
542
+ timeout-minutes : 60
531
543
needs : build-context
532
544
if : needs.build-context.outputs.run-tests == 'true'
533
545
steps :
@@ -592,8 +604,8 @@ jobs:
592
604
output-sarif : true
593
605
sanitizer : ${{ matrix.sanitizer }}
594
606
- name : Upload crash
595
- uses : actions/upload-artifact@v4
596
607
if : failure() && steps.build.outcome == 'success'
608
+ uses : actions/upload-artifact@v4
597
609
with :
598
610
name : ${{ matrix.sanitizer }}-artifacts
599
611
path : ./out/artifacts
@@ -606,36 +618,35 @@ jobs:
606
618
607
619
all-required-green : # This job does nothing and is only used for the branch protection
608
620
name : All required checks pass
609
- if : always()
610
-
621
+ runs-on : ubuntu-latest
622
+ timeout-minutes : 5
611
623
needs :
612
624
- build-context # Transitive dependency, needed to access `run-tests` value
613
625
- 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
626
+ - check-autoconf-regen
627
+ - check-generated-files
628
+ - build-windows
629
+ - build-windows-msi
630
+ - build-macos
631
+ - build-ubuntu
632
+ - build-ubuntu-ssltests
633
+ - build-wasi
634
+ - test-hypothesis
635
+ - build-asan
636
+ - build-tsan
622
637
- cross-build-linux
623
- - test_hypothesis
624
- - build_asan
625
- - build_tsan
626
638
- cifuzz
627
-
628
- runs-on : ubuntu-latest
639
+ if : always()
629
640
630
641
steps :
631
642
- name : Check whether the needed jobs succeeded or failed
632
643
uses : re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe
633
644
with :
634
645
allowed-failures : >-
635
- build_ubuntu_ssltests,
636
- build_windows_msi,
646
+ build-windows-msi,
647
+ build-ubuntu-ssltests,
648
+ test-hypothesis,
637
649
cifuzz,
638
- test_hypothesis,
639
650
allowed-skips : >-
640
651
${{
641
652
!fromJSON(needs.build-context.outputs.run-docs)
@@ -647,23 +658,23 @@ jobs:
647
658
${{
648
659
needs.build-context.outputs.run-tests != 'true'
649
660
&& '
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 ,
661
+ check-autoconf-regen ,
662
+ check-generated-files ,
663
+ build-macos ,
664
+ build-ubuntu ,
665
+ build-ubuntu-ssltests ,
666
+ build-wasi ,
667
+ test-hypothesis ,
668
+ build-asan ,
669
+ build-tsan ,
659
670
cross-build-linux,
660
671
'
661
672
|| ''
662
673
}}
663
674
${{
664
675
!fromJSON(needs.build-context.outputs.run-windows-tests)
665
676
&& '
666
- build_windows ,
677
+ build-windows ,
667
678
'
668
679
|| ''
669
680
}}
0 commit comments