Skip to content

Commit a104f8a

Browse files
Adapt @hugovk's proof-of-concept CI definition refactor
Suggested by @hugovk [1]. [1]: hugovk@a3f2ba9
1 parent a68ddea commit a104f8a

2 files changed

Lines changed: 35 additions & 98 deletions

File tree

.github/workflows/build.yml

Lines changed: 34 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -260,84 +260,28 @@ jobs:
260260
free-threading: ${{ matrix.free-threading }}
261261
os: ${{ matrix.os }}
262262

263-
build-ubuntu-ssltests-openssl:
264-
name: 'Ubuntu SSL tests with OpenSSL'
263+
build-ubuntu-ssltests:
264+
name: 'Ubuntu SSL tests'
265265
runs-on: ${{ matrix.os }}
266266
timeout-minutes: 60
267267
needs: build-context
268268
if: needs.build-context.outputs.run-tests == 'true'
269269
strategy:
270270
fail-fast: false
271271
matrix:
272-
os: [ubuntu-24.04]
273-
openssl_ver: [3.0.16, 3.1.8, 3.2.4, 3.3.3, 3.4.1]
272+
include:
273+
- { os: ubuntu-24.04, ssl: openssl, ssl_ver: 3.0.16 }
274+
- { os: ubuntu-24.04, ssl: openssl, ssl_ver: 3.1.8 }
275+
- { os: ubuntu-24.04, ssl: openssl, ssl_ver: 3.2.4 }
276+
- { os: ubuntu-24.04, ssl: openssl, ssl_ver: 3.3.3 }
277+
- { os: ubuntu-24.04, ssl: openssl, ssl_ver: 3.4.1 }
278+
- { os: ubuntu-24.04, ssl: aws-lc, ssl_ver: 1.55.0 }
274279
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
275280
env:
276-
OPENSSL_VER: ${{ matrix.openssl_ver }}
277-
MULTISSL_DIR: ${{ github.workspace }}/multissl
278-
OPENSSL_DIR: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}
279-
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib
280-
steps:
281-
- uses: actions/checkout@v4
282-
with:
283-
persist-credentials: false
284-
- name: Runner image version
285-
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
286-
- name: Restore config.cache
287-
uses: actions/cache@v4
288-
with:
289-
path: config.cache
290-
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.build-context.outputs.config-hash }}
291-
- name: Register gcc problem matcher
292-
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
293-
- name: Install dependencies
294-
run: sudo ./.github/workflows/posix-deps-apt.sh
295-
- name: Configure OpenSSL env vars
296-
run: |
297-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
298-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
299-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
300-
- name: 'Restore OpenSSL build'
301-
id: cache-openssl
302-
uses: actions/cache@v4
303-
with:
304-
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
305-
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
306-
- name: Install OpenSSL
307-
if: steps.cache-openssl.outputs.cache-hit != 'true'
308-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
309-
- name: Add ccache to PATH
310-
run: |
311-
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
312-
- name: Configure ccache action
313-
uses: hendrikmuhs/ccache-action@v1.2
314-
with:
315-
save: false
316-
- name: Configure CPython
317-
run: ./configure CFLAGS="-fdiagnostics-format=json" --config-cache --enable-slower-safety --with-pydebug --with-openssl="$OPENSSL_DIR"
318-
- name: Build CPython
319-
run: make -j4
320-
- name: Display build info
321-
run: make pythoninfo
322-
- name: SSL tests
323-
run: ./python Lib/test/ssltests.py
324-
325-
build-ubuntu-ssltests-awslc:
326-
name: 'Ubuntu SSL tests with AWS-LC'
327-
runs-on: ${{ matrix.os }}
328-
timeout-minutes: 60
329-
needs: build-context
330-
if: needs.build-context.outputs.run-tests == 'true'
331-
strategy:
332-
fail-fast: false
333-
matrix:
334-
os: [ubuntu-24.04]
335-
awslc_ver: [1.55.0]
336-
env:
337-
AWSLC_VER: ${{ matrix.awslc_ver}}
281+
SSL_VER: ${{ matrix.ssl_ver }}
338282
MULTISSL_DIR: ${{ github.workspace }}/multissl
339-
OPENSSL_DIR: ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }}
340-
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }}/lib
283+
SSL_DIR: ${{ github.workspace }}/multissl/${{ matrix.ssl }}/${{ matrix.ssl_ver }}
284+
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/${{ matrix.ssl }}/${{ matrix.ssl_ver }}/lib
341285
steps:
342286
- uses: actions/checkout@v4
343287
with:
@@ -356,22 +300,18 @@ jobs:
356300
- name: Configure SSL lib env vars
357301
run: |
358302
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
359-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}" >> "$GITHUB_ENV"
360-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}/lib" >> "$GITHUB_ENV"
361-
- name: 'Restore AWS-LC build'
362-
id: cache-aws-lc
303+
echo "SSL_DIR=${GITHUB_WORKSPACE}/multissl/${{ matrix.ssl }}/${SSL_VER}" >> "$GITHUB_ENV"
304+
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/${{ matrix.ssl }}/${SSL_VER}/lib" >> "$GITHUB_ENV"
305+
- name: 'Restore SSL build'
306+
id: cache-ssl
363307
uses: actions/cache@v4
364308
with:
365-
path: ./multissl/aws-lc/${{ matrix.awslc_ver }}
366-
key: ${{ matrix.os }}-multissl-aws-lc-${{ matrix.awslc_ver }}
367-
- name: Install AWS-LC
368-
if: steps.cache-aws-lc.outputs.cache-hit != 'true'
309+
path: ./multissl/${{ env.SSL }}/${{ env.SSL_VER }}
310+
key: ${{ matrix.os }}-multissl-${{ env.SSL }}-${{ env.SSL_VER }}
311+
- name: Install SSL
312+
if: steps.cache-ssl.outputs.cache-hit != 'true'
369313
run: |
370-
python3 Tools/ssl/multissltests.py \
371-
--steps=library \
372-
--base-directory "$MULTISSL_DIR" \
373-
--awslc ${{ matrix.awslc_ver }} \
374-
--system Linux
314+
python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --system Linux --ssl ${{ matrix.ssl }} --ssl-versions ${{ matrix.ssl_ver }}
375315
- name: Add ccache to PATH
376316
run: |
377317
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
@@ -381,18 +321,18 @@ jobs:
381321
save: false
382322
- name: Configure CPython
383323
run: |
384-
./configure CFLAGS="-fdiagnostics-format=json" \
385-
--config-cache \
386-
--enable-slower-safety \
387-
--with-pydebug \
388-
--with-openssl="$OPENSSL_DIR" \
389-
--with-builtin-hashlib-hashes=blake2 \
390-
--with-ssl-default-suites=openssl
324+
CMD=(./configure CFLAGS="-fdiagnostics-format=json" --config-cache --enable-slower-safety --with-pydebug --with-openssl="$SSL_DIR")
325+
if [ "${{ matrix.ssl }}" = "openssl" ]; then
326+
"${CMD[@]}"
327+
else
328+
"${CMD[@]}" --with-builtin-hashlib-hashes=blake2 --with-ssl-default-suites=openssl
329+
fi
391330
- name: Build CPython
392-
run: make -j
331+
run: make -j4
393332
- name: Display build info
394333
run: make pythoninfo
395334
- name: Verify python is linked to AWS-LC
335+
if: matrix.ssl == 'aws-lc'
396336
run: ./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' | grep AWS-LC
397337
- name: SSL tests
398338
run: ./python Lib/test/ssltests.py
@@ -435,7 +375,7 @@ jobs:
435375
key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
436376
- name: Install OpenSSL
437377
if: steps.cache-openssl.outputs.cache-hit != 'true'
438-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
378+
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --ssl 'openssl' --ssl-versions "$OPENSSL_VER" --system Linux
439379
- name: Add ccache to PATH
440380
run: |
441381
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
@@ -567,7 +507,7 @@ jobs:
567507
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
568508
- name: Install OpenSSL
569509
if: steps.cache-openssl.outputs.cache-hit != 'true'
570-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
510+
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --ssl 'openssl' --ssl-versions "$OPENSSL_VER" --system Linux
571511
- name: Add ccache to PATH
572512
run: |
573513
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
@@ -703,8 +643,7 @@ jobs:
703643
- build-windows-msi
704644
- build-macos
705645
- build-ubuntu
706-
- build-ubuntu-ssltests-awslc
707-
- build-ubuntu-ssltests-openssl
646+
- build-ubuntu-ssltests
708647
- build-wasi
709648
- test-hypothesis
710649
- build-asan
@@ -719,8 +658,7 @@ jobs:
719658
with:
720659
allowed-failures: >-
721660
build-windows-msi,
722-
build-ubuntu-ssltests-awslc,
723-
build-ubuntu-ssltests-openssl,
661+
build-ubuntu-ssltests,
724662
test-hypothesis,
725663
cifuzz,
726664
allowed-skips: >-
@@ -738,8 +676,7 @@ jobs:
738676
check-generated-files,
739677
build-macos,
740678
build-ubuntu,
741-
build-ubuntu-ssltests-awslc,
742-
build-ubuntu-ssltests-openssl,
679+
build-ubuntu-ssltests,
743680
build-wasi,
744681
test-hypothesis,
745682
build-asan,

.github/workflows/reusable-ubuntu.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ jobs:
6060
key: ${{ inputs.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
6161
- name: Install OpenSSL
6262
if: steps.cache-openssl.outputs.cache-hit != 'true'
63-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
63+
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --ssl openssl --ssl-versions "$OPENSSL_VER" --system Linux
6464
- name: Add ccache to PATH
6565
run: |
6666
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"

0 commit comments

Comments
 (0)