Skip to content

Commit 3d86e65

Browse files
authored
[3.12] CI: Use ImageOS (ubuntu24) instead of runner.os (Linux) in cache keys (GH-130200) (#130226)
1 parent 8a598fb commit 3d86e65

File tree

4 files changed

+60
-69
lines changed

4 files changed

+60
-69
lines changed

.github/workflows/build.yml

Lines changed: 40 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,11 @@ on:
55
push:
66
branches:
77
- 'main'
8-
- '3.12'
9-
- '3.11'
10-
- '3.10'
11-
- '3.9'
12-
- '3.8'
8+
- '3.*'
139
pull_request:
1410
branches:
1511
- 'main'
16-
- '3.12'
17-
- '3.11'
18-
- '3.10'
19-
- '3.9'
20-
- '3.8'
12+
- '3.*'
2113

2214
permissions:
2315
contents: read
@@ -115,8 +107,6 @@ jobs:
115107
with:
116108
fetch-depth: 1
117109
persist-credentials: false
118-
- name: Runner image version
119-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
120110
- name: Check Autoconf and aclocal versions
121111
run: |
122112
grep "Generated by GNU Autoconf 2.71" configure
@@ -157,16 +147,17 @@ jobs:
157147
with:
158148
python-version: '3.x'
159149
- name: Runner image version
160-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
150+
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
161151
- name: Restore config.cache
162152
uses: actions/cache@v4
163153
with:
164154
path: config.cache
165-
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ needs.check_source.outputs.config_hash }}-${{ env.pythonLocation }}
166-
- name: Install Dependencies
155+
# Include env.pythonLocation in key to avoid changes in environment when setup-python updates Python
156+
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.check_source.outputs.config_hash }}-${{ env.pythonLocation }}
157+
- name: Install dependencies
167158
run: sudo ./.github/workflows/posix-deps-apt.sh
168159
- name: Add ccache to PATH
169-
run: echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
160+
run: echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
170161
- name: Configure ccache action
171162
uses: hendrikmuhs/[email protected]
172163
with:
@@ -310,21 +301,21 @@ jobs:
310301
with:
311302
persist-credentials: false
312303
- name: Runner image version
313-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
304+
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
314305
- name: Restore config.cache
315306
uses: actions/cache@v4
316307
with:
317308
path: config.cache
318-
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ needs.check_source.outputs.config_hash }}
309+
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.check_source.outputs.config_hash }}
319310
- name: Register gcc problem matcher
320311
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
321-
- name: Install Dependencies
312+
- name: Install dependencies
322313
run: sudo ./.github/workflows/posix-deps-apt.sh
323314
- name: Configure OpenSSL env vars
324315
run: |
325-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV
326-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV
327-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV
316+
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
317+
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
318+
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
328319
- name: 'Restore OpenSSL build'
329320
id: cache-openssl
330321
uses: actions/cache@v4
@@ -333,10 +324,10 @@ jobs:
333324
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
334325
- name: Install OpenSSL
335326
if: steps.cache-openssl.outputs.cache-hit != 'true'
336-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
327+
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
337328
- name: Add ccache to PATH
338329
run: |
339-
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
330+
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
340331
- name: Configure ccache action
341332
uses: hendrikmuhs/[email protected]
342333
with:
@@ -369,9 +360,9 @@ jobs:
369360
run: sudo ./.github/workflows/posix-deps-apt.sh
370361
- name: Configure OpenSSL env vars
371362
run: |
372-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV
373-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV
374-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV
363+
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
364+
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
365+
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
375366
- name: 'Restore OpenSSL build'
376367
id: cache-openssl
377368
uses: actions/cache@v4
@@ -380,36 +371,36 @@ jobs:
380371
key: ${{ runner.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
381372
- name: Install OpenSSL
382373
if: steps.cache-openssl.outputs.cache-hit != 'true'
383-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
374+
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
384375
- name: Add ccache to PATH
385376
run: |
386-
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
377+
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
387378
- name: Configure ccache action
388379
uses: hendrikmuhs/[email protected]
389380
with:
390381
save: false
391382
- name: Setup directory envs for out-of-tree builds
392383
run: |
393-
echo "CPYTHON_RO_SRCDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-ro-srcdir)" >> $GITHUB_ENV
394-
echo "CPYTHON_BUILDDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-builddir)" >> $GITHUB_ENV
384+
echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
385+
echo "CPYTHON_BUILDDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-builddir)" >> "$GITHUB_ENV"
395386
- name: Create directories for read-only out-of-tree builds
396-
run: mkdir -p $CPYTHON_RO_SRCDIR $CPYTHON_BUILDDIR
387+
run: mkdir -p "$CPYTHON_RO_SRCDIR" "$CPYTHON_BUILDDIR"
397388
- name: Bind mount sources read-only
398-
run: sudo mount --bind -o ro $GITHUB_WORKSPACE $CPYTHON_RO_SRCDIR
389+
run: sudo mount --bind -o ro "$GITHUB_WORKSPACE" "$CPYTHON_RO_SRCDIR"
399390
- name: Runner image version
400-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
391+
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
401392
- name: Restore config.cache
402393
uses: actions/cache@v4
403394
with:
404395
path: ${{ env.CPYTHON_BUILDDIR }}/config.cache
405-
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ needs.check_source.outputs.config_hash }}
396+
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.check_source.outputs.config_hash }}
406397
- name: Configure CPython out-of-tree
407398
working-directory: ${{ env.CPYTHON_BUILDDIR }}
408399
run: |
409400
../cpython-ro-srcdir/configure \
410401
--config-cache \
411402
--with-pydebug \
412-
--with-openssl=$OPENSSL_DIR
403+
--with-openssl="$OPENSSL_DIR"
413404
- name: Build CPython out-of-tree
414405
working-directory: ${{ env.CPYTHON_BUILDDIR }}
415406
run: make -j4
@@ -418,18 +409,18 @@ jobs:
418409
run: make pythoninfo
419410
- name: Remount sources writable for tests
420411
# some tests write to srcdir, lack of pyc files slows down testing
421-
run: sudo mount $CPYTHON_RO_SRCDIR -oremount,rw
412+
run: sudo mount "$CPYTHON_RO_SRCDIR" -oremount,rw
422413
- name: Setup directory envs for out-of-tree builds
423414
run: |
424-
echo "CPYTHON_BUILDDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-builddir)" >> $GITHUB_ENV
415+
echo "CPYTHON_BUILDDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-builddir)" >> "$GITHUB_ENV"
425416
- name: "Create hypothesis venv"
426417
working-directory: ${{ env.CPYTHON_BUILDDIR }}
427418
run: |
428419
VENV_LOC=$(realpath -m .)/hypovenv
429420
VENV_PYTHON=$VENV_LOC/bin/python
430-
echo "HYPOVENV=${VENV_LOC}" >> $GITHUB_ENV
431-
echo "VENV_PYTHON=${VENV_PYTHON}" >> $GITHUB_ENV
432-
./python -m venv $VENV_LOC && $VENV_PYTHON -m pip install -r ${GITHUB_WORKSPACE}/Tools/requirements-hypothesis.txt
421+
echo "HYPOVENV=${VENV_LOC}" >> "$GITHUB_ENV"
422+
echo "VENV_PYTHON=${VENV_PYTHON}" >> "$GITHUB_ENV"
423+
./python -m venv "$VENV_LOC" && "$VENV_PYTHON" -m pip install -r "${GITHUB_WORKSPACE}/Tools/requirements-hypothesis.txt"
433424
- name: 'Restore Hypothesis database'
434425
id: cache-hypothesis-database
435426
uses: actions/cache@v4
@@ -483,25 +474,25 @@ jobs:
483474
with:
484475
persist-credentials: false
485476
- name: Runner image version
486-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
477+
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
487478
- name: Restore config.cache
488479
uses: actions/cache@v4
489480
with:
490481
path: config.cache
491-
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ needs.check_source.outputs.config_hash }}
482+
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ needs.check_source.outputs.config_hash }}
492483
- name: Register gcc problem matcher
493484
run: echo "::add-matcher::.github/problem-matchers/gcc.json"
494-
- name: Install Dependencies
485+
- name: Install dependencies
495486
run: sudo ./.github/workflows/posix-deps-apt.sh
496487
- name: Set up GCC-10 for ASAN
497488
uses: egor-tensin/setup-gcc@v1
498489
with:
499490
version: 10
500491
- name: Configure OpenSSL env vars
501492
run: |
502-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV
503-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV
504-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV
493+
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
494+
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
495+
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
505496
- name: 'Restore OpenSSL build'
506497
id: cache-openssl
507498
uses: actions/cache@v4
@@ -510,10 +501,10 @@ jobs:
510501
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
511502
- name: Install OpenSSL
512503
if: steps.cache-openssl.outputs.cache-hit != 'true'
513-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
504+
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
514505
- name: Add ccache to PATH
515506
run: |
516-
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
507+
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
517508
- name: Configure ccache action
518509
uses: hendrikmuhs/[email protected]
519510
with:

.github/workflows/reusable-macos.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ jobs:
3434
with:
3535
persist-credentials: false
3636
- name: Runner image version
37-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
37+
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
3838
- name: Restore config.cache
3939
uses: actions/cache@v4
4040
with:
4141
path: config.cache
42-
key: ${{ github.job }}-${{ inputs.os }}-${{ env.IMAGE_VERSION }}-${{ inputs.config_hash }}
42+
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ inputs.config_hash }}
4343
- name: Install Homebrew dependencies
4444
run: |
4545
brew install pkg-config [email protected] xz gdbm tcl-tk@8

.github/workflows/reusable-tsan.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@ jobs:
2525
with:
2626
persist-credentials: false
2727
- name: Runner image version
28-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
28+
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
2929
- name: Restore config.cache
3030
uses: actions/cache@v4
3131
with:
3232
path: config.cache
33-
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ inputs.config_hash }}
34-
- name: Install Dependencies
33+
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ inputs.config_hash }}
34+
- name: Install dependencies
3535
run: |
3636
sudo ./.github/workflows/posix-deps-apt.sh
3737
sudo apt install -y clang
3838
# Reduce ASLR to avoid TSAN crashing
3939
sudo sysctl -w vm.mmap_rnd_bits=28
40-
- name: TSAN Option Setup
40+
- name: TSAN option setup
4141
run: |
4242
echo "TSAN_OPTIONS=log_path=${GITHUB_WORKSPACE}/tsan_log suppressions=${GITHUB_WORKSPACE}/Tools/tsan/suppressions${{
4343
fromJSON(inputs.free-threading)
@@ -48,7 +48,7 @@ jobs:
4848
echo "CXX=clang++" >> "$GITHUB_ENV"
4949
- name: Add ccache to PATH
5050
run: |
51-
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
51+
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
5252
- name: Configure ccache action
5353
uses: hendrikmuhs/[email protected]
5454
with:

.github/workflows/reusable-ubuntu.yml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ jobs:
3737
run: sudo ./.github/workflows/posix-deps-apt.sh
3838
- name: Configure OpenSSL env vars
3939
run: |
40-
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> $GITHUB_ENV
41-
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> $GITHUB_ENV
42-
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> $GITHUB_ENV
40+
echo "MULTISSL_DIR=${GITHUB_WORKSPACE}/multissl" >> "$GITHUB_ENV"
41+
echo "OPENSSL_DIR=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}" >> "$GITHUB_ENV"
42+
echo "LD_LIBRARY_PATH=${GITHUB_WORKSPACE}/multissl/openssl/${OPENSSL_VER}/lib" >> "$GITHUB_ENV"
4343
- name: 'Restore OpenSSL build'
4444
id: cache-openssl
4545
uses: actions/cache@v4
@@ -48,37 +48,37 @@ jobs:
4848
key: ${{ matrix.os }}-multissl-openssl-${{ env.OPENSSL_VER }}
4949
- name: Install OpenSSL
5050
if: steps.cache-openssl.outputs.cache-hit != 'true'
51-
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory $MULTISSL_DIR --openssl $OPENSSL_VER --system Linux
51+
run: python3 Tools/ssl/multissltests.py --steps=library --base-directory "$MULTISSL_DIR" --openssl "$OPENSSL_VER" --system Linux
5252
- name: Add ccache to PATH
5353
run: |
54-
echo "PATH=/usr/lib/ccache:$PATH" >> $GITHUB_ENV
54+
echo "PATH=/usr/lib/ccache:$PATH" >> "$GITHUB_ENV"
5555
- name: Configure ccache action
5656
uses: hendrikmuhs/[email protected]
5757
with:
5858
save: ${{ github.event_name == 'push' }}
5959
max-size: "200M"
6060
- name: Setup directory envs for out-of-tree builds
6161
run: |
62-
echo "CPYTHON_RO_SRCDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-ro-srcdir)" >> $GITHUB_ENV
63-
echo "CPYTHON_BUILDDIR=$(realpath -m ${GITHUB_WORKSPACE}/../cpython-builddir)" >> $GITHUB_ENV
62+
echo "CPYTHON_RO_SRCDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-ro-srcdir)" >> "$GITHUB_ENV"
63+
echo "CPYTHON_BUILDDIR=$(realpath -m "${GITHUB_WORKSPACE}"/../cpython-builddir)" >> "$GITHUB_ENV"
6464
- name: Create directories for read-only out-of-tree builds
65-
run: mkdir -p $CPYTHON_RO_SRCDIR $CPYTHON_BUILDDIR
65+
run: mkdir -p "$CPYTHON_RO_SRCDIR" "$CPYTHON_BUILDDIR"
6666
- name: Bind mount sources read-only
67-
run: sudo mount --bind -o ro $GITHUB_WORKSPACE $CPYTHON_RO_SRCDIR
67+
run: sudo mount --bind -o ro "$GITHUB_WORKSPACE" "$CPYTHON_RO_SRCDIR"
6868
- name: Runner image version
69-
run: echo "IMAGE_VERSION=${ImageVersion}" >> $GITHUB_ENV
69+
run: echo "IMAGE_OS_VERSION=${ImageOS}-${ImageVersion}" >> "$GITHUB_ENV"
7070
- name: Restore config.cache
7171
uses: actions/cache@v4
7272
with:
7373
path: ${{ env.CPYTHON_BUILDDIR }}/config.cache
74-
key: ${{ github.job }}-${{ runner.os }}-${{ env.IMAGE_VERSION }}-${{ inputs.config_hash }}
74+
key: ${{ github.job }}-${{ env.IMAGE_OS_VERSION }}-${{ inputs.config_hash }}
7575
- name: Configure CPython out-of-tree
7676
working-directory: ${{ env.CPYTHON_BUILDDIR }}
7777
run: >-
7878
../cpython-ro-srcdir/configure
7979
--config-cache
8080
--with-pydebug
81-
--with-openssl=$OPENSSL_DIR
81+
--with-openssl="$OPENSSL_DIR"
8282
${{ fromJSON(inputs.free-threading) && '--disable-gil' || '' }}
8383
- name: Build CPython out-of-tree
8484
working-directory: ${{ env.CPYTHON_BUILDDIR }}
@@ -88,7 +88,7 @@ jobs:
8888
run: make pythoninfo
8989
- name: Remount sources writable for tests
9090
# some tests write to srcdir, lack of pyc files slows down testing
91-
run: sudo mount $CPYTHON_RO_SRCDIR -oremount,rw
91+
run: sudo mount "$CPYTHON_RO_SRCDIR" -oremount,rw
9292
- name: Tests
9393
working-directory: ${{ env.CPYTHON_BUILDDIR }}
9494
run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu"

0 commit comments

Comments
 (0)