Skip to content

馃懛 ci: refresh only the apt list the frontend job writes - #2260

Merged
gaborbernat merged 1 commit into
mainfrom
fix/apt-update-scope
Sep 9, 2026
Merged

馃懛 ci: refresh only the apt list the frontend job writes#2260
gaborbernat merged 1 commit into
mainfrom
fix/apt-update-scope

Conversation

@gaborbernat

Copy link
Copy Markdown
Member

The frontend job stopped installing clang, which took ci-gate down with it on main and on every open pull request. 馃敡 The step adds apt.llvm.org to the runner's sources and then runs a bare apt-get update, which refreshes every list on the image rather than the one it just wrote. On 2026-09-09 Google's Chrome repository served a Packages.gz whose hash did not match its Release file, apt-get exited 100, and the job ended before apt-get install ran. Run 34384212771 failed that way twice, once on its own and once on a rerun of the failed jobs, so the cause was not a passing network hiccup. The LLVM index fetched cleanly in both attempts, and the llvm-toolchain-noble-22 suite still publishes clang-22: a third party the build has no dependency on decided whether the build ran.

Pointing the refresh at sources.list.d/llvm.list through Dir::Etc::sourcelist, with Dir::Etc::sourceparts emptied, restricts the command to the repository the step controls. APT::Get::List-Cleanup=0 leaves the image's existing lists in place, so lcov still resolves from the Ubuntu archive without a second refresh. The narrower fetch also skips roughly eleven megabytes of indexes the job never reads.

Any repository on the runner image can break again the same way. This change limits the blast radius to the one repository the step installs from, so an unrelated publisher shipping a bad index no longer fails the build.

Closes #2259

The frontend job installs clang from apt.llvm.org, and `apt-get update`
reads every list on the runner image rather than the one the step just
added. On 2026-09-09 Google's Chrome repository served a Packages.gz
whose hash did not match its Release file, so the command exited 100 and
clang was never installed. apt.llvm.org was healthy throughout and its
index fetched cleanly; a third party we do not depend on decided whether
the job ran.

Pointing the refresh at the LLVM list alone removes that dependency and
skips eleven megabytes of indexes the job has no use for. Keeping
List-Cleanup off preserves the image's existing lists, so lcov still
resolves from the Ubuntu archive without a second refresh.
@gaborbernat gaborbernat added the bug Something isn't working label Sep 9, 2026
@gaborbernat
gaborbernat merged commit da03ee7 into main Sep 9, 2026
19 checks passed
@gaborbernat
gaborbernat deleted the fix/apt-update-scope branch September 9, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Third-party apt repository can fail the frontend job

1 participant