Skip to content

Commit 348ff73

Browse files
EliahKaganclaude
andcommitted
ci: run Python 3.8 and 3.9 jobs on ubuntu-24.04
GitHub is rolling out Ubuntu 26.04 as `ubuntu-latest` gradually across repositories, from 2026-10-19 through 2026-11-19 (see actions/runner-images#14748). This repository now receives it: on 2026-10-25, jobs started at 10:06 UTC got the `ubuntu-24.04` image, and jobs started at 13:33 UTC got `ubuntu-26.04`. `actions/setup-python` takes its interpreters from the `actions/python-versions` manifest, which has Linux x64 builds of Python 3.8 and 3.9 for Ubuntu 24.04 but none for 26.04. The lowest version it has for 26.04 is 3.10. So on 26.04, `setup-python` fails with "The version '3.8' with architecture 'x64' was not found for Ubuntu 26.04" (and likewise for 3.9). This broke six jobs: - `test (smmap, 3.8)`, `test (smmap, 3.9)`, `test (gitdb, 3.8)`, and `test (gitdb, 3.9)` in `dependencies.yml`, which test the vendored `smmap` and `gitdb` packages (both declare `python_requires=">=3.7"`). - `install/import (ubuntu-latest, 3.8)` and `install/import (ubuntu-latest, 3.9)` in `pythonpackage.yml`, which check that GitPython (`requires-python = ">=3.8"`) still installs and imports on those versions. Run just those Ubuntu jobs on `ubuntu-24.04`. Everything else, including the 3.10 jobs in the same matrices, stays on `ubuntu-latest`. In `dependencies.yml`, `include` adds an `os` key only to the 3.8 and 3.9 combinations, and `runs-on` falls back to `ubuntu-latest` where it is unset. In `pythonpackage.yml`, the `ubuntu-latest` 3.8 and 3.9 combinations are swapped for `ubuntu-24.04` ones, so the job names show the image they actually run on. No status checks are required on `main`, so the renamed jobs do not affect merging. Python 3.8 and 3.9 can be installed on 26.04 in other ways: the deadsnakes PPA publishes 3.8.20 and 3.9.25 for 26.04, and uv can install python-build-standalone builds. But these would add a different installation mechanism (and, for deadsnakes, a third-party apt source) for just these jobs, while pinning keeps the same `setup-python` builds that were tested before. This needs revisiting when GitHub retires the `ubuntu-24.04` image, if 3.8 and 3.9 are still tested then. `actionlint` reports no problems with either workflow. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent f1fb0bd commit 348ff73

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

‎.github/workflows/dependencies.yml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,18 @@ permissions:
1111

1212
jobs:
1313
test:
14-
runs-on: ubuntu-latest
14+
runs-on: ${{ matrix.os || 'ubuntu-latest' }}
1515
strategy:
1616
fail-fast: false
1717
matrix:
1818
project: [smmap, gitdb]
1919
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.13t"]
20+
include:
21+
# setup-python has no builds of these versions for Ubuntu 26.04.
22+
- python-version: "3.8"
23+
os: ubuntu-24.04
24+
- python-version: "3.9"
25+
os: ubuntu-24.04
2026

2127
steps:
2228
- uses: actions/checkout@v7

‎.github/workflows/pythonpackage.yml‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,17 @@ jobs:
251251
matrix:
252252
os: [ubuntu-latest, macos-latest, windows-latest]
253253
python: ["3.8", "3.9", "3.10"]
254+
exclude:
255+
# setup-python has no builds of these versions for Ubuntu 26.04.
256+
- os: ubuntu-latest
257+
python: "3.8"
258+
- os: ubuntu-latest
259+
python: "3.9"
260+
include:
261+
- os: ubuntu-24.04
262+
python: "3.8"
263+
- os: ubuntu-24.04
264+
python: "3.9"
254265
env:
255266
GIT_PYTHON_BACKEND: cli
256267
steps:

0 commit comments

Comments
 (0)