Repository navigation
Conversation
Across 39 check runs the gates spent their tail in setup, not in tests: Chromium's --with-deps took up to 13 minutes on a slow apt mirror while installing only fonts, and apt fetched packages the image already ships. Install only the apt packages dpkg lacks and the system libraries ldd reports missing, fetch the headless shell alone, and key the cargo cache on the compilers and flags rather than on check.yml, whose every edit rotated a 1.6 GB entry.
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.
Across 39 recent
checkruns, the slow tail was environment setup rather than tests.Install Chromiumhad a p90 of 560 to 620s (max 808s) because--with-depsrunsapt-get updateand an install every time, and on ubuntu-24.04 it installed only fonts and upgrades. The apt steps had a p90 around 185s for packages that are partly already on the image. Restoring the cargo cache was a steady 30s, but its key hashedcheck.yml, which changed 35 times in 60 days against 23Cargo.lockchanges, and every change saved a fresh 1.6 GB entry.A new
apt-installaction installs only the packages dpkg does not report asinstalled, tries the image's package lists before an update, and bounds each apt call. The Chromium action installs only the headless shell (every launch in the repo is headless), runsinstall-depsonly whenlddfinds a missing library in the shell or its bundled.sofiles, fails if no shell is found, and requires a launch check. Its cache key followsplaywright-core/browsers.jsoninstead of the whole lockfile. The cargo cache key now hashes rustc, the C++ compiler's own--versionbanner, and the build-flag variables, and fails the step when CXX does not run instead of silently hashing less.Verified locally:
./scripts/test.sh portablepasses,actionlintandshellcheckon each action's script are clean, and the new tests intests/test_test_gate.pycover the apt selection and retry, the Chromium dependency branch, the cache key inputs, and a guard that no browser launch is headed or names achannel. Each new test was checked to fail when the logic it covers is removed. Not yet verified on a hosted runner: whether the browser suites behave the same without the fonts--with-depsused to install. This PR's browser lane is that check.Left out: splitting the browser lane (243s of tests, no timeouts, so the gain is about two minutes for another runner's setup) and a prebuilt CI image, which is worth measuring only if apt remains a bottleneck after this. The first runs on this branch start cold, because both cache keys changed.
Summary by cubic
Skips CI setup work the runner already has, cutting the slow tail of
checkruns that was environment setup rather than tests. First runs start cold because both cache keys changed.apt-installaction installs only packages dpkg does not report as installed, trying the image's package lists before an update.install-depsonly whenlddfinds a missing library; it fails when no shell is found and requires a launch check. A test guard refuses headed orchannellaunches and now accepts an explicitheadless: true.check.yml, which rotated a 1.6 GB entry on every workflow edit.Written for commit 2866d10. Summary will update on new commits.