From 1564244b1a07531e0d92d3cd3e1721cf5d9683de Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 19 Aug 2026 00:17:51 -0700 Subject: [PATCH] ci: install the runner's own packages through the mirror fallback too (#10831) The e2e job overwrote the runner's sources.list with two azure-only lines and installed fuse from it, so the same mirror outage that took out the image builds failed the step outright - this time on the runner rather than inside the container, where the image-side fallback cannot reach. Install through the same helper, and widen its rewrite to match any archive host so it works whether the pristine list came from the base image (archive.ubuntu.com) or from a CI runner (azure.archive.ubuntu.com). Keeping the runner's original list also restores the security and backports pockets, which the hand-written two-line replacement dropped. Verified against the outage itself: with the pristine list pointed at Azure, the build logged the skip after Azure timed out for real and installed from archive.ubuntu.com. --- .github/workflows/e2e.yml | 9 +++------ docker/apt-install | 4 +++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index a0aa5c796..aa79529bf 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -61,13 +61,10 @@ jobs: - name: Install dependencies run: | - # Use faster mirrors and install with timeout sudo rm -f /etc/apt/sources.list.d/azure-cli.list /etc/apt/sources.list.d/microsoft-prod.list - echo "deb http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -cs) main restricted universe multiverse" | sudo tee /etc/apt/sources.list - echo "deb http://azure.archive.ubuntu.com/ubuntu/ $(lsb_release -cs)-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list - - sudo apt-get update --fix-missing - sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends fuse + # Same helper the e2e image installs through: the runner's own list is + # azure-only too, and an outage there fails this step outright. + sudo docker/apt-install fuse # Verify FUSE installation echo "FUSE version: $(fusermount --version 2>&1 || echo 'fusermount not found')" diff --git a/docker/apt-install b/docker/apt-install index f534a4e9f..8dfd999d3 100755 --- a/docker/apt-install +++ b/docker/apt-install @@ -8,7 +8,9 @@ set -e [ -f /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig for mirror in azure.archive.ubuntu.com archive.ubuntu.com; do - sed "s|http://archive\.ubuntu\.com/ubuntu|http://$mirror/ubuntu|g; s|http://security\.ubuntu\.com/ubuntu|http://$mirror/ubuntu|g" \ + # Any archive host, so this works whether the pristine list came from the + # base image (archive.ubuntu.com) or a CI runner (azure.archive.ubuntu.com). + sed "s|http://[a-z0-9.]*archive\.ubuntu\.com/ubuntu|http://$mirror/ubuntu|g; s|http://security\.ubuntu\.com/ubuntu|http://$mirror/ubuntu|g" \ /etc/apt/sources.list.orig > /etc/apt/sources.list if apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=15 update && \ DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=15 install -y \