From 4a3b7a34f2d583302ab5ea44c43f4c8223d83c20 Mon Sep 17 00:00:00 2001 From: pbean Date: Fri, 26 Jun 2026 13:28:45 -0700 Subject: [PATCH] ci: make tmux install resilient to third-party apt repo flakiness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "Install tmux" step chained `apt-get update && apt-get install` under a `-e` shell, so a Hash Sum mismatch on an unrelated third-party repo baked into the runner image (e.g. dl.google.com/chrome serving a stale index mid-publish) returned exit 100 and killed the whole job. This is the recurring "flaky" CI failure — it has nothing to do with our tests or the tmux package, which lives in the Ubuntu archive and downloads fine. Make `apt-get update` non-fatal (`|| true`) so unrelated repo hiccups can't fail the build, then assert tmux is actually installed with `tmux -V` so a genuine install failure still fails loudly (rather than silently skipping the ~27 generic_tmux integration tests). Add `Acquire::Retries=3` for transient blips. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0e81e89..465c8d7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,16 @@ jobs: python-version: ${{ matrix.python-version }} - name: Install tmux (for generic_tmux integration tests) - run: sudo apt-get update && sudo apt-get install -y tmux + run: | + # `apt-get update` can exit non-zero when an unrelated third-party + # repo baked into the runner image (e.g. dl.google.com/chrome) serves + # a stale index (Hash Sum mismatch). That must not fail our build — + # the Ubuntu archive lists still refresh, so tmux installs cleanly. + # `tmux -V` then asserts tmux is actually present, so a genuine + # install failure still fails the job loudly. + sudo apt-get update -o Acquire::Retries=3 || true + sudo apt-get install -y tmux + tmux -V - name: Install the project run: uv sync --locked --all-extras