Repository navigation
CI: Pin runner image to ubuntu-24.04 - #1998
Merged
Merged
Conversation
GitHub moved the ubuntu-latest label to Ubuntu 26.04 on 2026-11-05. That broke
five workflows at once on any run after the rollout. main has not re-run CI
since 2026-11-04, so the breakage is not yet visible there, but it will hit the
next push to main and every pull request.
Two distinct failure modes, both from the same image change:
1. Python 3.8 and 3.9 are not on the 26.04 image, so setup-python fails:
The version '3.9' with architecture 'x64' was not found for Ubuntu 26.04.
This hits quality (3.9), docs (3.8), consistency (3.9), hub (3.9) and
helm (3.9).
2. The 26.04 toolchain cannot build pytrec-eval. Jobs on Python 3.10 install
Python fine, then fail building the C extension, because a newer GCC rejects
the vendored trec_eval sources:
error: Failed to build `pytrec-eval==0.5`
trec_eval-9.0.8/form_prefs_counts.c:818:12: error: passing argument 4 of
'qsort' from incompatible pointer type [-Wincompatible-pointer-types]
This hits unittests, eager, performance, preparation and the other 3.10 jobs.
Pinning every job to ubuntu-24.04 restores the environment that was green on
2026-11-04 and fixes both modes together. Verified against the actions/
python-versions manifest: 24.04 ships 3.8, 3.9 and 3.10, while 26.04 ships
3.10+ only.
Pinned rather than moving the Python versions forward, because pyproject.toml
declares requires-python = ">=3.8": bumping the pins to satisfy the new image
would quietly drop CI coverage for versions the package still claims to
support. Dropping 3.8/3.9 should be a separate, deliberate decision.
The vestigial `OS:` env var is updated alongside each runs-on so the two cannot
drift apart and mislead a reader. Nothing references it (no env.OS or $OS
anywhere in the repo), so this is cosmetic.
Each runs-on carries a short comment saying why it is pinned, and
.github/workflows/README.md records the detail: both error signatures, how to
check whether a newer image is usable, and a note that quality's "likely due to
not using pre-commit hooks" output is misleading here -- it prints on any
failure, and setup-python failed before pre-commit ever ran.
No application code changes; .github/workflows only. The pinned label and the
Python availability are verified against the upstream manifest, but the
pytrec-eval build can only be confirmed by CI on this PR.
Signed-off-by: Yoav Katz <katz@il.ibm.com>
yoavkatz
force-pushed
the
ci/pin-ubuntu-24.04
branch
from
November 7, 2026 13:13
136c1e8 to
c181a7f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GitHub moved the
ubuntu-latestlabel to Ubuntu 26.04 on 2026-11-05. That broke five workflows at once on any run after the rollout.mainhas not re-run CI since 2026-11-04, so the breakage is not yet visible there — but it will hit the next push tomainand every pull request. It is already red on #1997.Two failure modes, one cause
1. Python 3.8 and 3.9 are not on the 26.04 image, so
actions/setup-pythonfails outright:Hits
quality(3.9),docs(3.8),consistency(3.9),hub(3.9),helm(3.9).2. The 26.04 toolchain cannot build
pytrec-eval. Jobs on Python 3.10 install Python fine, then fail building the C extension because a newer GCC rejects the vendoredtrec_evalsources:Hits
unittests,eager,performance,preparationand the other 3.10 jobs.The fix
Pin every job to
ubuntu-24.04. This restores the environment that was green on 2026-11-04 and fixes both modes together.Verified against the actions/python-versions manifest:
Why pin the image rather than bump the Python versions
pyproject.tomldeclaresrequires-python = ">=3.8". Moving the pins forward to satisfy the new image would quietly drop CI coverage for versions the package still claims to support. Dropping 3.8/3.9 should be a separate, deliberate decision — not a side effect of a runner rollout.Notes for reviewers
runs-oncarries a short comment saying why it is pinned, so it does not get reverted toubuntu-latestand reintroduce this..github/workflows/README.mdrecords both error signatures and how to check whether a newer image is usable.OS:env var is updated alongside eachruns-onso the two cannot drift apart and mislead a reader. Nothing references it (noenv.OSor$OSanywhere in the repo), so that part is cosmetic.quality's failure message is misleading and cost me time: it prints "likely due to not using pre-commit hooks" on any failure, butsetup-pythonfailed before pre-commit ever ran. Noted in the README.jobs[*].runs-on).No application code changes —
.github/workflowsonly. The pinned label and Python availability are verified against the upstream manifest, but thepytrec-evalbuild can only be confirmed by CI on this PR.Does not close an issue; this is the
mainCI regression blocking #1997.🤖 Generated with Claude Code