Repository navigation
ci(e2e): bound, retry and cache the e2e install steps - #839
Merged
Merged
Conversation
A slow Azure Ubuntu mirror (29 kB/s) made the browser system-package and ffmpeg installs run past the 30 minute job limit, so shards were cancelled before any test ran. - Pin the e2e runner to ubuntu-24.04 while ubuntu-latest moves to 26. - scripts/ci/retry.sh: bounded attempts with a per-attempt timeout that kills the whole process group, every attempt logged, exit code kept. Tested by tests/ci/test_retry_sh.sh in the lint job. - Browser download and system packages are separate steps, each with a 10 minute limit; browsers and the downloaded .debs are cached. - ffmpeg comes from a SHA256-pinned BtbN static build, cached and checked on every run, instead of apt; the job fails by name if libvorbis, libmp3lame, aac or flac is missing. - Per-step setup timings and cache hit or miss go to the job summary. Closes #838
…s as dead The PR's own CI hit the slow mirror: two shards spent three 170 s attempts fetching fonts from azure.archive.ubuntu.com at about 40 kB/s. apt only falls back to the next mirror on an error, so retry.sh now tells the command its attempt number, and attempts after the first drop the Azure entry from /etc/apt/apt-mirrors.txt and start on archive.ubuntu.com. The hang test read a killed child as alive in the lint container, where PID 1 does not reap orphans; it now reads the state from /proc. Closes #838
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.
Closes #838
What changed
ubuntu-24.04forfrontend-e2eonly, with a comment to revisit after the Ubuntu 26 label migration ([Ubuntu]ubuntu-latestlabel will use Ubuntu 26.04 in November 2026 actions/runner-images#14748).scripts/ci/retry.sh: up to 3 attempts, a per-attempttimeoutthat kills the whole process group, pauses of 10 s then 20 s. Every attempt is logged with exit code and duration; a retried success leaves a warning annotation; the last exit code is returned unchanged.tests/ci/test_retry_sh.sh(28 checks) runs in thelintjob.npx playwright install chromiumon its own, cached (~/.cache/ms-playwright, keyed on the lockfile's Playwright version), 10 minute step limit.playwright install-deps chromiumon its own, run as root through the retry wrapper so the timeout can kill apt. apt getsAcquire::Retries=3, http/https timeouts of 20 s andDPkg::Lock::Timeout=60via/etc/apt/apt.conf.d, so Playwright's own apt-get uses them. The downloaded .debs are cached (keyed on Playwright and image version). Attempts after the first dropazure.archive.ubuntu.comfrom/etc/apt/apt-mirrors.txt, so they start onarchive.ubuntu.com: apt falls back only on an error, never on a trickle. 10 minute step limit.autobuild-2026-09-30-13-08, ffmpeg 8.1.3, gpl), pinned by SHA256, cached, and checked against the pin on every run before it is unpacked. The step printsffmpeg -encoders | grep -E "libvorbis|libmp3lame"and fails by name if libvorbis, libmp3lame, aac or flac is missing.if: always(), so a step killed by its limit shows as "did not finish".Why ffmpeg from BtbN
Step limits
10 minutes each. A healthy run takes about 20 s for the system packages and seconds for the rest. The 12-minute installs in #838 were at 29 kB/s; with the .debs cached they should not recur. If they do, failing at 10 minutes and retrying (apt resumes partial downloads) beats using up the whole 30 minute job, which stays as the outer limit.
What did not change
frontend-e2e (1)to(3), the selector, the scoped and full cadence,e2e-full.yml.uv.lock, package files.frontend-e2e(Linux Rust Check's apt step peaks at 72 s, thetestandlinux-installerapt steps stay under 60 s), so they are not pinned or changed.Evidence
Run 39827053220 (first
e2e-full, 6c3cf58), attempt 1: shard 1 spent 12m23s inplaywright install --with-deps, then 16m28s in apt's ffmpeg until the job limit. Shard 3: 11m38s, then 17m41s. Shard 2: 22 s and 11 s. The log has "Fetched 20.9 MB in 11min 56s (29.2 kB/s)" fromazure.archive.ubuntu.com; the Chromium download itself took 9 s. The image wasubuntu-24.0420261012.334.1. Same pattern in runs 39823430200, 39792892907 and 39827062156.Trade-offs
Results on this PR
e2e-fullrun 39854515365: browsers 1 s (hit), system packages 10 to 39 s (hit), ffmpeg 7 to 10 s (hit, checksum and unpack). All 3 shards green.export-oggspecs pass.Not verified