Skip to content

Commit c9b96b1

Browse files
authored
gh-136728: Combine OpenSSL and AWS-LC CI configurations (#144805)
1 parent 3484ef6 commit c9b96b1

File tree

2 files changed

+39
-82
lines changed

2 files changed

+39
-82
lines changed

.github/workflows/build.yml

Lines changed: 35 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,8 @@ jobs:
253253
os: ${{ matrix.os }}
254254
test-opts: ${{ matrix.test-opts || '' }}
255255

256-
build-ubuntu-ssltests-openssl:
257-
name: 'Ubuntu SSL tests with OpenSSL'
256+
build-ubuntu-ssltests:
257+
name: 'Ubuntu SSL tests'
258258
runs-on: ${{ matrix.os }}
259259
timeout-minutes: 60
260260
needs: build-context
@@ -263,16 +263,25 @@ jobs:
263263
fail-fast: false
264264
matrix:
265265
os: [ubuntu-24.04]
266-
# Keep 1.1.1w in our list despite it being upstream EOL and otherwise
267-
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
268-
# supported by important vendors such as AWS-LC.
269-
openssl_ver: [1.1.1w, 3.0.19, 3.3.6, 3.4.4, 3.5.5, 3.6.1]
270-
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
266+
ssllib:
267+
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
268+
## OpenSSL
269+
# Keep 1.1.1w in our list despite it being upstream EOL and otherwise
270+
# unsupported as it most resembles other 1.1.1-work-a-like ssl APIs
271+
# supported by important vendors such as AWS-LC.
272+
- { name: openssl, version: 1.1.1w }
273+
- { name: openssl, version: 3.0.19 }
274+
- { name: openssl, version: 3.3.6 }
275+
- { name: openssl, version: 3.4.4 }
276+
- { name: openssl, version: 3.5.5 }
277+
- { name: openssl, version: 3.6.1 }
278+
## AWS-LC
279+
- { name: aws-lc, version: 1.68.0 }
271280
env:
272-
OPENSSL_VER: ${{ matrix.openssl_ver }}
281+
SSLLIB_VER: ${{ matrix.ssllib.version }}
273282
MULTISSL_DIR: ${{ github.workspace }}/multissl
274-
OPENSSL_DIR: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}
275-
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/openssl/${{ matrix.openssl_ver }}/lib
283+
SSLLIB_DIR: ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}
284+
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}/lib
276285
steps:
277286
- uses: actions/checkout@v6
278287
with:
@@ -283,89 +292,37 @@ jobs:
283292
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
284293
- name: Install dependencies
285294
run: sudo ./.github/workflows/posix-deps-apt.sh
286-
- name: Configure OpenSSL env vars
287-
run: |
288-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
289-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
290-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
291-
- name: 'Restore OpenSSL build'
292-
id: cache-openssl
293-
uses: actions/cache@v5
294-
with:
295-
path: ./multissl/openssl/${{ env.OPENSSL_VER }}
296-
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
297-
- name: Install OpenSSL
298-
if: steps.cache-openssl.outputs.cache-hit != 'true'
299-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
300-
- name: Configure CPython
301-
run: ./configure CFLAGS="-fdiagnostics-format=json" --config-cache --enable-slower-safety --with-pydebug --with-openssl="$OPENSSL_DIR"
302-
- name: Build CPython
303-
run: make -j4
304-
- name: Display build info
305-
run: make pythoninfo
306-
- name: SSL tests
307-
run: ./python Lib/test/ssltests.py
308-
309-
build-ubuntu-ssltests-awslc:
310-
name: 'Ubuntu SSL tests with AWS-LC'
311-
runs-on: ${{ matrix.os }}
312-
timeout-minutes: 60
313-
needs: build-context
314-
if: needs.build-context.outputs.run-ubuntu == 'true'
315-
strategy:
316-
fail-fast: false
317-
matrix:
318-
os: [ubuntu-24.04]
319-
awslc_ver: [1.55.0]
320-
env:
321-
AWSLC_VER: ${{ matrix.awslc_ver}}
322-
MULTISSL_DIR: ${{ github.workspace }}/multissl
323-
OPENSSL_DIR: ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }}
324-
LD_LIBRARY_PATH: ${{ github.workspace }}/multissl/aws-lc/${{ matrix.awslc_ver }}/lib
325-
steps:
326-
- uses: actions/checkout@v6
327-
with:
328-
persist-credentials: false
329-
- name: Runner image version
330-
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
331-
- name: Register gcc problem matcher
332-
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
333-
- name: Install dependencies
334-
run: sudo ./.github/workflows/posix-deps-apt.sh
335-
- name: Configure SSL lib env vars
336-
run: |
337-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
338-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}" >> "$GITHUB_ENV"
339-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/aws-lc/${AWSLC_VER}/lib" >> "$GITHUB_ENV"
340-
- name: 'Restore AWS-LC build'
341-
id: cache-aws-lc
295+
- name: 'Restore SSL library build'
296+
id: cache-ssl-lib
342297
uses: actions/cache@v5
343298
with:
344-
path: ./multissl/aws-lc/${{ matrix.awslc_ver }}
345-
key: ${{ matrix.os }}-multissl-aws-lc-${{ matrix.awslc_ver }}
346-
- name: Install AWS-LC
347-
if: steps.cache-aws-lc.outputs.cache-hit != 'true'
299+
path: ./multissl/${{ matrix.ssllib.name }}/${{ matrix.ssllib.version }}
300+
key: ${{ matrix.os }}-multissl-${{ matrix.ssllib.name }}-${{ matrix.ssllib.version }}
301+
- name: Install SSL Library
302+
if: steps.cache-ssl-lib.outputs.cache-hit != 'true'
348303
run: |
349304
python3 Tools/ssl/multissltests.py \
350305
--steps=library \
351306
--base-directory "$MULTISSL_DIR" \
352-
--awslc ${{ matrix.awslc_ver }} \
307+
'--${{ matrix.ssllib.name }}' '${{ matrix.ssllib.version }}' \
353308
--system Linux
354309
- name: Configure CPython
355310
run: |
356311
./configure CFLAGS="-fdiagnostics-format=json" \
357312
--config-cache \
358313
--enable-slower-safety \
359314
--with-pydebug \
360-
--with-openssl="$OPENSSL_DIR" \
315+
--with-openssl="$SSLLIB_DIR" \
361316
--with-builtin-hashlib-hashes=blake2 \
362317
--with-ssl-default-suites=openssl
363318
- name: Build CPython
364-
run: make -j
319+
run: make -j4
365320
- name: Display build info
366321
run: make pythoninfo
367-
- name: Verify python is linked to AWS-LC
368-
run: ./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' | grep AWS-LC
322+
- name: Verify python is linked to the right lib
323+
run: |
324+
./python -c 'import ssl; print(ssl.OPENSSL_VERSION)' \
325+
| grep -iE '${{ matrix.ssllib.name }}.*${{ matrix.ssllib.version }}'
369326
- name: SSL tests
370327
run: ./python Lib/test/ssltests.py
371328

@@ -691,8 +648,7 @@ jobs:
691648
- build-windows-msi
692649
- build-macos
693650
- build-ubuntu
694-
- build-ubuntu-ssltests-awslc
695-
- build-ubuntu-ssltests-openssl
651+
- build-ubuntu-ssltests
696652
- build-ios
697653
- build-wasi
698654
- test-hypothesis
@@ -709,8 +665,7 @@ jobs:
709665
allowed-failures: >-
710666
build-android,
711667
build-windows-msi,
712-
build-ubuntu-ssltests-awslc,
713-
build-ubuntu-ssltests-openssl,
668+
build-ubuntu-ssltests,
714669
test-hypothesis,
715670
cifuzz,
716671
allowed-skips: >-
@@ -741,8 +696,7 @@ jobs:
741696
!fromJSON(needs.build-context.outputs.run-ubuntu)
742697
&& '
743698
build-ubuntu,
744-
build-ubuntu-ssltests-awslc,
745-
build-ubuntu-ssltests-openssl,
699+
build-ubuntu-ssltests,
746700
test-hypothesis,
747701
build-asan,
748702
build-san,

Tools/ssl/multissltests.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
]
6565

6666
AWSLC_RECENT_VERSIONS = [
67-
"1.55.0",
67+
"1.68.0",
6868
]
6969

7070
# store files in ../multissl
@@ -108,7 +108,10 @@
108108
).format(LIBRESSL_RECENT_VERSIONS, LIBRESSL_OLD_VERSIONS)
109109
)
110110
parser.add_argument(
111+
'--aws-lc',
112+
# Soft-deprecated alias
111113
'--awslc',
114+
dest='awslc',
112115
nargs='+',
113116
default=(),
114117
help=(

0 commit comments

Comments
 (0)