@@ -55,10 +55,10 @@ jobs:
5555 needs : build-context
5656 if : needs.build-context.outputs.run-tests == 'true'
5757 steps :
58- - uses : actions/checkout@v4
58+ - uses : actions/checkout@v6
5959 with :
6060 persist-credentials : false
61- - uses : actions/setup-python@v5
61+ - uses : actions/setup-python@v6
6262 with :
6363 python-version : ' 3.x'
6464 - name : Install dependencies
8989 if : ${{ failure() && steps.check.conclusion == 'failure' }}
9090 run : |
9191 make regen-abidump
92- - uses : actions/upload-artifact@v4
92+ - uses : actions/upload-artifact@v6
9393 name : Publish updated ABI files
9494 if : ${{ failure() && steps.check.conclusion == 'failure' }}
9595 with :
@@ -111,7 +111,7 @@ jobs:
111111 run : |
112112 apt update && apt install git -yq
113113 git config --global --add safe.directory "$GITHUB_WORKSPACE"
114- - uses : actions/checkout@v4
114+ - uses : actions/checkout@v6
115115 with :
116116 fetch-depth : 1
117117 persist-credentials : false
@@ -148,10 +148,10 @@ jobs:
148148 needs : build-context
149149 if : needs.build-context.outputs.run-tests == 'true'
150150 steps :
151- - uses : actions/checkout@v4
151+ - uses : actions/checkout@v6
152152 with :
153153 persist-credentials : false
154- - uses : actions/setup-python@v5
154+ - uses : actions/setup-python@v6
155155 with :
156156 python-version : ' 3.x'
157157 - name : Runner image version
@@ -303,15 +303,15 @@ jobs:
303303 # Keep 1.1.1w in our list despite it being upstream EOL and otherwise
304304 # unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
305305 # supported by important vendors such as AWS-LC.
306- openssl_ver : [1.1.1w, 3.0.18 , 3.2 .6, 3.3.5 , 3.4.3 , 3.5.4 ]
306+ openssl_ver : [1.1.1w, 3.0.19 , 3.3 .6, 3.4.4 , 3.5.5 , 3.6.1 ]
307307 # See Tools/ssl/make_ssl_data.py for notes on adding a new version
308308 env :
309309 OPENSSL_VER : ${{ matrix.openssl_ver }}
310310 MULTISSL_DIR : ${{ github.workspace }}/multissl
311311 OPENSSL_DIR : ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}
312312 LD_LIBRARY_PATH : ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib
313313 steps :
314- - uses : actions/checkout@v4
314+ - uses : actions/checkout@v6
315315 with :
316316 persist-credentials : false
317317 - name : Runner image version
@@ -327,7 +327,7 @@ jobs:
327327 echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
328328 - name : ' Restore OpenSSL build'
329329 id : cache-openssl
330- uses : actions/cache@v4
330+ uses : actions/cache@v5
331331 with :
332332 path : ./multissl/openssl/${{ env.OPENSSL_VER }}
333333 key : ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
@@ -362,7 +362,7 @@ jobs:
362362
363363 runs-on : ${{ matrix.runs-on }}
364364 steps :
365- - uses : actions/checkout@v4
365+ - uses : actions/checkout@v6
366366 with :
367367 persist-credentials : false
368368 - name : Build and test
@@ -375,7 +375,7 @@ jobs:
375375 timeout-minutes : 60
376376 runs-on : macos-14
377377 steps :
378- - uses : actions/checkout@v4
378+ - uses : actions/checkout@v6
379379 with :
380380 persist-credentials : false
381381
@@ -407,7 +407,7 @@ jobs:
407407 OPENSSL_VER : 3.0.18
408408 PYTHONSTRICTEXTENSIONBUILD : 1
409409 steps :
410- - uses : actions/checkout@v4
410+ - uses : actions/checkout@v6
411411 with :
412412 persist-credentials : false
413413 - name : Register gcc problem matcher
@@ -421,7 +421,7 @@ jobs:
421421 echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
422422 - name : ' Restore OpenSSL build'
423423 id : cache-openssl
424- uses : actions/cache@v4
424+ uses : actions/cache@v5
425425 with :
426426 path : ./multissl/openssl/${{ env.OPENSSL_VER }}
427427 key : ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
@@ -471,7 +471,7 @@ jobs:
471471 ./python -m venv "$VENV_LOC" && "$VENV_PYTHON" -m pip install -r "${GITHUB_WORKSPACE}/Tools/requirements-hypothesis.txt"
472472 - name : ' Restore Hypothesis database'
473473 id : cache-hypothesis-database
474- uses : actions/cache@v4
474+ uses : actions/cache@v5
475475 with :
476476 path : ${{ env.CPYTHON_BUILDDIR }}/.hypothesis/
477477 key : hypothesis-database-${{ github.head_ref || github.run_id }}
@@ -498,7 +498,7 @@ jobs:
498498 -x test_subprocess \
499499 -x test_signal \
500500 -x test_sysconfig
501- - uses : actions/upload-artifact@v4
501+ - uses : actions/upload-artifact@v6
502502 if : always()
503503 with :
504504 name : hypothesis-example-db
@@ -519,7 +519,7 @@ jobs:
519519 PYTHONSTRICTEXTENSIONBUILD : 1
520520 ASAN_OPTIONS : detect_leaks=0:allocator_may_return_null=1:handle_segv=0
521521 steps :
522- - uses : actions/checkout@v4
522+ - uses : actions/checkout@v6
523523 with :
524524 persist-credentials : false
525525 - name : Runner image version
@@ -529,7 +529,7 @@ jobs:
529529 - name : Install dependencies
530530 run : sudo ./.github/workflows/posix-deps-apt.sh
531531 - name : Set up GCC-10 for ASAN
532- uses : egor-tensin/setup-gcc@v1
532+ uses : egor-tensin/setup-gcc@v2
533533 with :
534534 version : 10
535535 - name : Configure OpenSSL env vars
@@ -539,7 +539,7 @@ jobs:
539539 echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
540540 - name : ' Restore OpenSSL build'
541541 id : cache-openssl
542- uses : actions/cache@v4
542+ uses : actions/cache@v5
543543 with :
544544 path : ./multissl/openssl/${{ env.OPENSSL_VER }}
545545 key : ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
@@ -589,7 +589,7 @@ jobs:
589589 needs : build-context
590590 if : needs.build-context.outputs.run-ubuntu == 'true'
591591 steps :
592- - uses : actions/checkout@v4
592+ - uses : actions/checkout@v6
593593 with :
594594 persist-credentials : false
595595 - name : Runner image version
@@ -617,45 +617,48 @@ jobs:
617617 run : |
618618 "$BUILD_DIR/cross-python/bin/python3" -m test test_sysconfig test_site test_embed
619619
620- # CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
621620 cifuzz :
622- name : CIFuzz
623- runs-on : ubuntu-latest
624- timeout-minutes : 60
621+ # ${{ '' } is a hack to nest jobs under the same sidebar category.
622+ name : CIFuzz${{ '' }} # zizmor: ignore[obfuscation]
625623 needs : build-context
626- if : needs.build-context.outputs.run-ci-fuzz == 'true'
624+ if : >-
625+ needs.build-context.outputs.run-ci-fuzz == 'true'
626+ || needs.build-context.outputs.run-ci-fuzz-stdlib == 'true'
627627 permissions :
628628 security-events : write
629629 strategy :
630630 fail-fast : false
631631 matrix :
632- sanitizer : [address, undefined, memory]
633- steps :
634- - name : Build fuzzers (${{ matrix.sanitizer }})
635- id : build
636- uses : google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
637- with :
638- oss-fuzz-project-name : cpython3
639- sanitizer : ${{ matrix.sanitizer }}
640- - name : Run fuzzers (${{ matrix.sanitizer }})
641- uses : google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
642- with :
643- fuzz-seconds : 600
644- oss-fuzz-project-name : cpython3
645- output-sarif : true
646- sanitizer : ${{ matrix.sanitizer }}
647- - name : Upload crash
648- if : failure() && steps.build.outcome == 'success'
649- uses : actions/upload-artifact@v4
650- with :
651- name : ${{ matrix.sanitizer }}-artifacts
652- path : ./out/artifacts
653- - name : Upload SARIF
654- if : always() && steps.build.outcome == 'success'
655- uses : github/codeql-action/upload-sarif@v3
656- with :
657- sarif_file : cifuzz-sarif/results.sarif
658- checkout_path : cifuzz-sarif
632+ sanitizer :
633+ - address
634+ oss-fuzz-project-name :
635+ - cpython3
636+ - python3-libraries
637+ include :
638+ - sanitizer : undefined
639+ oss-fuzz-project-name : cpython3
640+ - sanitizer : memory
641+ oss-fuzz-project-name : cpython3
642+ exclude :
643+ # Note that the 'no-exclude' sentinel below is to prevent
644+ # an empty string value from excluding all jobs and causing
645+ # GHA to create a 'default' matrix entry with all empty values.
646+ - oss-fuzz-project-name : >-
647+ ${{
648+ needs.build-context.outputs.run-ci-fuzz == 'true'
649+ && 'no-exclude'
650+ || 'cpython3'
651+ }}
652+ - oss-fuzz-project-name : >-
653+ ${{
654+ needs.build-context.outputs.run-ci-fuzz-stdlib == 'true'
655+ && 'no-exclude'
656+ || 'python3-libraries'
657+ }}
658+ uses : ./.github/workflows/reusable-cifuzz.yml
659+ with :
660+ oss-fuzz-project-name : ${{ matrix.oss-fuzz-project-name }}
661+ sanitizer : ${{ matrix.sanitizer }}
659662
660663 all-required-green : # This job does nothing and is only used for the branch protection
661664 name : All required checks pass
@@ -671,7 +674,6 @@ jobs:
671674 - build-macos
672675 - build-ubuntu
673676 - build-ubuntu-ssltests
674- - build-android
675677 - build-ios
676678 - build-wasi
677679 - test-hypothesis
@@ -686,6 +688,7 @@ jobs:
686688 uses : re-actors/alls-green@05ac9388f0aebcb5727afa17fcccfecd6f8ec5fe
687689 with :
688690 allowed-failures : >-
691+ build-android,
689692 build-windows-msi,
690693 build-ubuntu-ssltests,
691694 test-hypothesis,
@@ -701,7 +704,12 @@ jobs:
701704 || ''
702705 }}
703706 ${{ !fromJSON(needs.build-context.outputs.run-windows-tests) && 'build-windows,' || '' }}
704- ${{ !fromJSON(needs.build-context.outputs.run-ci-fuzz) && 'cifuzz,' || '' }}
707+ ${{
708+ !fromJSON(needs.build-context.outputs.run-ci-fuzz)
709+ && !fromJSON(needs.build-context.outputs.run-ci-fuzz-stdlib)
710+ && 'cifuzz,' ||
711+ ''
712+ }}
705713 ${{ !fromJSON(needs.build-context.outputs.run-macos) && 'build-macos,' || '' }}
706714 ${{
707715 !fromJSON(needs.build-context.outputs.run-ubuntu)
0 commit comments