diff --git a/.github/scripts/prune-runner-apt-sources.sh b/.github/scripts/prune-runner-apt-sources.sh new file mode 100755 index 00000000000..0eab0a538d3 --- /dev/null +++ b/.github/scripts/prune-runner-apt-sources.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash +# +# GitHub's Ubuntu runner images preinstall Microsoft's apt repositories (azure-cli and the +# packages.microsoft.com prod repo). Wails uses neither, and when that host serves a 403 for +# them - see https://github.com/wailsapp/wails/issues/6040 - `apt-get update` fails and takes +# the whole job down with it. Dropping the two list files makes our CI independent of it. +# +# Only do this on ephemeral GitHub-hosted VMs. On a self-hosted runner, or on a developer's +# machine running these workflows locally with `act`, /etc/apt belongs to the host: deleting +# real apt sources there is destructive and not something a CI job should do. +set -euo pipefail + +if [ "${ACT:-}" = "true" ] || [ "${RUNNER_ENVIRONMENT:-}" != "github-hosted" ]; then + echo "Leaving apt sources untouched (ACT=${ACT:-unset}, RUNNER_ENVIRONMENT=${RUNNER_ENVIRONMENT:-unset})." + exit 0 +fi + +sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list /etc/apt/sources.list.d/azure-cli.list diff --git a/.github/workflows/build-and-test-v3.yml b/.github/workflows/build-and-test-v3.yml index 3a8b58119f2..14fb14ff118 100644 --- a/.github/workflows/build-and-test-v3.yml +++ b/.github/workflows/build-and-test-v3.yml @@ -108,6 +108,8 @@ jobs: - name: Install linux dependencies (GTK4 default) if: matrix.os == 'ubuntu-latest' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-4-dev libwebkitgtk-6.0-dev libwayland-dev build-essential pkg-config xvfb x11-xserver-utils at-spi2-core xdg-desktop-portal-gtk @@ -219,6 +221,8 @@ jobs: - name: Install linux dependencies (GTK4 default) if: matrix.os == 'ubuntu-latest' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-4-dev libwebkitgtk-6.0-dev libwayland-dev build-essential pkg-config diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 094091d9d9c..07e0d8a0461 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -27,12 +27,16 @@ jobs: - name: Install apt packages (ubuntu-22.04) if: matrix.os == 'ubuntu-22.04' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config - name: Install apt packages (ubuntu-24.04) if: matrix.os == 'ubuntu-24.04' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-3-dev libwebkit2gtk-4.1-dev build-essential pkg-config libegl1 @@ -130,6 +134,8 @@ jobs: - name: Install apt packages (ubuntu-22.04) if: matrix.os == 'ubuntu-22.04' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config @@ -140,6 +146,8 @@ jobs: - name: Install apt packages (ubuntu-24.04) if: matrix.os == 'ubuntu-24.04' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-3-dev libwebkit2gtk-4.1-dev build-essential pkg-config libegl1 diff --git a/.github/workflows/build-cross-image.yml b/.github/workflows/build-cross-image.yml index 9ec25622288..6cb34c0a138 100644 --- a/.github/workflows/build-cross-image.yml +++ b/.github/workflows/build-cross-image.yml @@ -162,6 +162,8 @@ jobs: - name: Install Linux dev dependencies run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update sudo apt-get install -y libgtk-4-dev libwebkitgtk-6.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev diff --git a/.github/workflows/cross-compile-test-v3.yml b/.github/workflows/cross-compile-test-v3.yml index bd2c42a0a3f..fb148991bfb 100644 --- a/.github/workflows/cross-compile-test-v3.yml +++ b/.github/workflows/cross-compile-test-v3.yml @@ -88,6 +88,8 @@ jobs: - name: Install Linux dependencies run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-4-dev libwebkitgtk-6.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config diff --git a/.github/workflows/pr-master.yml b/.github/workflows/pr-master.yml index 09bd745eb23..1bf50f8e1c1 100644 --- a/.github/workflows/pr-master.yml +++ b/.github/workflows/pr-master.yml @@ -68,12 +68,16 @@ jobs: - name: Install linux dependencies (22.04) if: matrix.os == 'ubuntu-22.04' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-3-dev libwebkit2gtk-4.0-dev build-essential pkg-config - name: Install linux dependencies (24.04) if: matrix.os == 'ubuntu-24.04' run: | + # Drop the runner image's unused Microsoft apt repos (no-op off GitHub-hosted runners). + ./.github/scripts/prune-runner-apt-sources.sh sudo apt-get update -qq sudo apt-get install -y --no-install-recommends libgtk-3-dev libwebkit2gtk-4.1-dev build-essential pkg-config