@@ -261,7 +261,7 @@ jobs:
261261 # Keep 1.1.1w in our list despite it being upstream EOL and otherwise
262262 # unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
263263 # supported by important vendors such as AWS-LC.
264- openssl_ver : [1.1.1w, 3.0.18, 3.2.6, 3.3. 5, 3.4.3, 3.5.4]
264+ openssl_ver : [1.1.1w, 3.0.18, 3.3. 5, 3.4.3, 3.5.4, 3.6.0 ]
265265 # See Tools/ssl/make_ssl_data.py for notes on adding a new version
266266 env :
267267 OPENSSL_VER : ${{ matrix.openssl_ver }}
@@ -641,45 +641,48 @@ jobs:
641641 run : |
642642 "$BUILD_DIR/cross-python/bin/python3" -m test test_sysconfig test_site test_embed
643643
644- # CIFuzz job based on https://google.github.io/oss-fuzz/getting-started/continuous-integration/
645644 cifuzz :
646- name : CIFuzz
647- runs-on : ubuntu-latest
648- timeout-minutes : 60
645+ # ${{ '' } is a hack to nest jobs under the same sidebar category.
646+ name : CIFuzz${{ '' }} # zizmor: ignore[obfuscation]
649647 needs : build-context
650- if : needs.build-context.outputs.run-ci-fuzz == 'true'
648+ if : >-
649+ needs.build-context.outputs.run-ci-fuzz == 'true'
650+ || needs.build-context.outputs.run-ci-fuzz-stdlib == 'true'
651651 permissions :
652652 security-events : write
653653 strategy :
654654 fail-fast : false
655655 matrix :
656- sanitizer : [address, undefined, memory]
657- steps :
658- - name : Build fuzzers (${{ matrix.sanitizer }})
659- id : build
660- uses : google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
661- with :
656+ sanitizer :
657+ - address
658+ oss-fuzz-project-name :
659+ - cpython3
660+ - python3-libraries
661+ include :
662+ - sanitizer : undefined
662663 oss-fuzz-project-name : cpython3
663- sanitizer : ${{ matrix.sanitizer }}
664- - name : Run fuzzers (${{ matrix.sanitizer }})
665- uses : google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
666- with :
667- fuzz-seconds : 600
664+ - sanitizer : memory
668665 oss-fuzz-project-name : cpython3
669- output-sarif : true
670- sanitizer : ${{ matrix.sanitizer }}
671- - name : Upload crash
672- if : failure() && steps.build.outcome == 'success'
673- uses : actions/upload-artifact@v6
674- with :
675- name : ${{ matrix.sanitizer }}-artifacts
676- path : ./out/artifacts
677- - name : Upload SARIF
678- if : always() && steps.build.outcome == 'success'
679- uses : github/codeql-action/upload-sarif@v4
680- with :
681- sarif_file : cifuzz-sarif/results.sarif
682- checkout_path : cifuzz-sarif
666+ exclude :
667+ # Note that the 'no-exclude' sentinel below is to prevent
668+ # an empty string value from excluding all jobs and causing
669+ # GHA to create a 'default' matrix entry with all empty values.
670+ - oss-fuzz-project-name : >-
671+ ${{
672+ needs.build-context.outputs.run-ci-fuzz == 'true'
673+ && 'no-exclude'
674+ || 'cpython3'
675+ }}
676+ - oss-fuzz-project-name : >-
677+ ${{
678+ needs.build-context.outputs.run-ci-fuzz-stdlib == 'true'
679+ && 'no-exclude'
680+ || 'python3-libraries'
681+ }}
682+ uses : ./.github/workflows/reusable-cifuzz.yml
683+ with :
684+ oss-fuzz-project-name : ${{ matrix.oss-fuzz-project-name }}
685+ sanitizer : ${{ matrix.sanitizer }}
683686
684687 all-required-green : # This job does nothing and is only used for the branch protection
685688 name : All required checks pass
@@ -734,7 +737,12 @@ jobs:
734737 || ''
735738 }}
736739 ${{ !fromJSON(needs.build-context.outputs.run-windows-tests) && 'build-windows,' || '' }}
737- ${{ !fromJSON(needs.build-context.outputs.run-ci-fuzz) && 'cifuzz,' || '' }}
740+ ${{
741+ !fromJSON(needs.build-context.outputs.run-ci-fuzz)
742+ && !fromJSON(needs.build-context.outputs.run-ci-fuzz-stdlib)
743+ && 'cifuzz,' ||
744+ ''
745+ }}
738746 ${{ !fromJSON(needs.build-context.outputs.run-macos) && 'build-macos,' || '' }}
739747 ${{
740748 !fromJSON(needs.build-context.outputs.run-ubuntu)
0 commit comments