* [3.15] gh-152785: Upgrade Ubuntu from 24.04 to 26.04 in GitHub Actions (#152717) (#153416)
gh-152785: Upgrade Ubuntu from 24.04 to 26.04 in GitHub Actions (#152717)
* Replace "ubuntu-24.04" with "ubuntu-26.04" on most jobs.
* Replace "ubuntu-latest" with "ubuntu-26.04" for Cross build Linux.
* Replace "ubuntu-latest" with "ubuntu-slim" for small workloads.
* Update ".github/actionlint.yaml" to allow "ubuntu-26.04"
and "ubuntu-26.04-arm" images.
Backport changes:
* Keep Ubuntu 24.04 and llvm.sh to install LLVM 19 and LLVM 20.
* WASI uses ubuntu-26.04, not ubuntu-26.04-arm.
(cherry picked from commit
4c79929705eb31959a6f4071cc34583de0737a28)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
(cherry picked from commit
da999e638c03a05ed2b0f8a828f4013c7f9179bd)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
config-variables: null
+# Pending release of actionlint > 1.7.12 for ubuntu-26.04* support:
+# https://github.com/rhysd/actionlint/pull/683
+self-hosted-runner:
+ labels:
+ - ubuntu-26.04
+ - ubuntu-26.04-arm
+
paths:
.github/workflows/**/*.yml:
ignore:
jobs:
add-header:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-slim
permissions:
issues: write
timeout-minutes: 5
name: 'Check if Autoconf files are up to date'
# Don't use ubuntu-latest but a specific version to make the job
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
container:
image: ghcr.io/python/autoconf:2025.01.02.12581854023
timeout-minutes: 60
name: 'Check if generated files are up to date'
# Don't use ubuntu-latest but a specific version to make the job
# reproducible: to get the same tools versions (autoconf, aclocal, ...)
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
timeout-minutes: 60
needs: build-context
if: needs.build-context.outputs.run-tests == 'true'
free-threading:
- false
- true
+ # For BOLT jobs, https://apt.llvm.org/llvm.sh doesn't support LLVM 19
+ # on Ubuntu 26.04, so stick to Ubuntu 24.04 until LLVM is upgraded.
os:
- ubuntu-24.04
- ubuntu-24.04-arm
strategy:
fail-fast: false
matrix:
- os: [ubuntu-24.04]
+ os: [ubuntu-26.04]
ssllib:
# See Tools/ssl/make_ssl_data.py for notes on adding a new version
## OpenSSL
- arch: aarch64
runs-on: macos-26
- arch: x86_64
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
runs-on: ${{ matrix.runs-on }}
steps:
test-hypothesis:
name: "Hypothesis tests on Ubuntu"
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
timeout-minutes: 60
needs: build-context
if: needs.build-context.outputs.run-ubuntu == 'true'
strategy:
fail-fast: false
matrix:
- os: [ubuntu-24.04]
+ os: [ubuntu-26.04]
env:
OPENSSL_VER: 3.5.7
PYTHONSTRICTEXTENSIONBUILD: 1
cross-build-linux:
name: Cross build Linux
- runs-on: ubuntu-latest
+ runs-on: ubuntu-26.04
timeout-minutes: 60
needs: build-context
if: needs.build-context.outputs.run-ubuntu == 'true'
jobs:
interpreter:
name: Interpreter (Debug)
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
timeout-minutes: 60
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- true
- false
include:
+ # https://apt.llvm.org/llvm.sh doesn't support LLVM 19
+ # on Ubuntu 26.04, so stick to Ubuntu 24.04 until LLVM is upgraded.
- target: x86_64-unknown-linux-gnu/gcc
runner: ubuntu-24.04
- target: aarch64-unknown-linux-gnu/gcc
linux-extras:
name: ${{ matrix.name }}
+ # https://apt.llvm.org/llvm.sh doesn't support LLVM 19 on Ubuntu 26.04,
+ # so stick to Ubuntu 24.04 until LLVM is upgraded.
runs-on: ubuntu-24.04
timeout-minutes: 60
strategy:
jobs:
notify-new-bugs-announce:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-slim
permissions:
issues: read
timeout-minutes: 10
apt-get -yq --no-install-recommends install \
build-essential \
pkg-config \
+ curl \
gdb \
lcov \
libb2-dev \
libbz2-dev \
libffi-dev \
- libgdbm-dev \
libgdbm-compat-dev \
+ libgdbm-dev \
liblzma-dev \
libncurses5-dev \
libreadline6-dev \
libsqlite3-dev \
libssl-dev \
libzstd-dev \
- lzma \
- lzma-dev \
strace \
tk-dev \
uuid-dev \
label-dnm:
name: DO-NOT-MERGE
if: github.repository_owner == 'python'
- runs-on: ubuntu-latest
+ runs-on: ubuntu-slim
permissions:
pull-requests: read
timeout-minutes: 10
label-reviews:
name: Unresolved review
if: github.repository_owner == 'python'
- runs-on: ubuntu-latest
+ runs-on: ubuntu-slim
permissions:
pull-requests: read
timeout-minutes: 10
# Run "doctest" on HEAD as new syntax doesn't exist in the latest stable release
doctest:
name: 'Doctest'
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
timeout-minutes: 60
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
jobs:
build-emscripten-reusable:
name: 'build and test'
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
timeout-minutes: 40
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
&& ' (free-threading)'
|| ''
}}
+ # https://apt.llvm.org/llvm.sh doesn't support LLVM 20 on Ubuntu 26.04,
+ # so stick to Ubuntu 24.04 until LLVM is upgraded.
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
run: sudo ./.github/workflows/posix-deps-apt.sh
- name: Install Clang and BOLT
if: ${{ fromJSON(inputs.bolt-optimizations) }}
+ # For BOLT jobs, https://apt.llvm.org/llvm.sh doesn't support LLVM 19
+ # on Ubuntu 26.04, so stick to Ubuntu 24.04 until LLVM is upgraded.
run: |
sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh 19
sudo apt-get install --no-install-recommends bolt-19
jobs:
build-wasi-reusable:
name: 'build and test'
- runs-on: ubuntu-24.04
+ runs-on: ubuntu-26.04
timeout-minutes: 60
env:
WASMTIME_VERSION: 38.0.3
jobs:
stale:
if: github.repository_owner == 'python'
- runs-on: ubuntu-latest
+ runs-on: ubuntu-slim
permissions:
pull-requests: write
timeout-minutes: 10
matrix:
include:
- target: x86_64-unknown-linux-gnu/gcc
- runner: ubuntu-24.04
+ runner: ubuntu-26.04
configure_flags: --with-pydebug
- target: x86_64-unknown-linux-gnu/gcc-free-threading
- runner: ubuntu-24.04
+ runner: ubuntu-26.04
configure_flags: --disable-gil
- target: aarch64-unknown-linux-gnu/gcc
- runner: ubuntu-24.04-arm
+ runner: ubuntu-26.04-arm
configure_flags: --with-pydebug
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
python-version: '3.11'
- name: Build
run: |
- sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" ./llvm.sh ${{ env.LLVM_VERSION }}
- export PATH="$(llvm-config-${{ env.LLVM_VERSION }} --bindir):$PATH"
+ # On ubuntu-26.04 image, clang is clang-21 by default
CC=clang-${{ env.LLVM_VERSION }} ./configure --with-tail-call-interp ${{ matrix.configure_flags }}
make all --jobs 4
- name: Test
jobs:
verify:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-slim
timeout-minutes: 5
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2