A pull request takes about nine minutes to go green. Measured on #458, which touched Dockerfile, includes/, extension.json and smoke.yml:
|
duration |
| wall clock, first job start to last job finish |
535s |
binary (x86_64) |
467s |
smoke |
321s |
preview |
180s |
coverage |
172s |
phan (master) / phan (REL1_46) |
126s / 121s |
docker-image |
52s |
| everything else |
≤ 36s each |
Two jobs set the pace. Nothing below is a decision yet — the point is that the levers are now measured rather than guessed at.
binary is the long pole, at 467s
It runs on a pull request touching Dockerfile, .dockerignore, binary.Dockerfile, bin/build.php, caddy/** or its own workflow — so any image change pays eight minutes, single-arch. Worth asking what that check is buying on a pull request that a release build would not catch, and whether it belongs on the critical path or on a nightly. It is also the job that has already failed once for reasons outside the repository (dl.static-php.dev answering 500), which is its own argument for not gating on it.
smoke bakes twice, sequentially: 209s of its 321s
Step timings:
36s Build and load the wikven image
105s Bake the docs site
3s Assert the bake produced a complete, self-contained site
104s Bake the docs site again and assert the two bakes are identical
33s Install the browser test tooling
24s Assert the rendered site in a browser
The second bake is #411's reproducibility check and the two are independent — separate containers, separate output directories — so they could run at once and the diff follow. That would cut roughly 100s if the runner has the cores for it: #437 made the skin passes concurrent, and BuildConcurrency sizes itself from /proc/cpuinfo and the cgroup rather than from current load, so two bakes would each claim the whole machine and contend. It might come out slower. It needs measuring on a real runner, not reasoning.
npx playwright install --with-deps chromium is 33s of the same job and is cacheable (~/.cache/ms-playwright, keyed on the lockfile).
Six workflows build the image
docker-image.yml, pr-preview.yml, deploy-docs.yml, smoke.yml, binary.yml and translations.yml all build it. That is already thought about — smoke.yml says only docker-image exports the layer cache and the others read it, since concurrent mode=max writers overwrite each other — and smoke's own build taking 36s suggests the cache is being hit. Worth confirming the other readers hit it too rather than assuming.
Done when
A pull request that changes only PHP under includes/ goes green in noticeably less than nine minutes, without giving up a check that has ever caught something.
🤖 Generated with Claude Code
A pull request takes about nine minutes to go green. Measured on #458, which touched
Dockerfile,includes/,extension.jsonandsmoke.yml:binary (x86_64)smokepreviewcoveragephan (master)/phan (REL1_46)docker-imageTwo jobs set the pace. Nothing below is a decision yet — the point is that the levers are now measured rather than guessed at.
binaryis the long pole, at 467sIt runs on a pull request touching
Dockerfile,.dockerignore,binary.Dockerfile,bin/build.php,caddy/**or its own workflow — so any image change pays eight minutes, single-arch. Worth asking what that check is buying on a pull request that a release build would not catch, and whether it belongs on the critical path or on a nightly. It is also the job that has already failed once for reasons outside the repository (dl.static-php.devanswering 500), which is its own argument for not gating on it.smokebakes twice, sequentially: 209s of its 321sStep timings:
The second bake is #411's reproducibility check and the two are independent — separate containers, separate output directories — so they could run at once and the diff follow. That would cut roughly 100s if the runner has the cores for it: #437 made the skin passes concurrent, and
BuildConcurrencysizes itself from/proc/cpuinfoand the cgroup rather than from current load, so two bakes would each claim the whole machine and contend. It might come out slower. It needs measuring on a real runner, not reasoning.npx playwright install --with-deps chromiumis 33s of the same job and is cacheable (~/.cache/ms-playwright, keyed on the lockfile).Six workflows build the image
docker-image.yml,pr-preview.yml,deploy-docs.yml,smoke.yml,binary.ymlandtranslations.ymlall build it. That is already thought about —smoke.ymlsays onlydocker-imageexports the layer cache and the others read it, since concurrentmode=maxwriters overwrite each other — and smoke's own build taking 36s suggests the cache is being hit. Worth confirming the other readers hit it too rather than assuming.Done when
A pull request that changes only PHP under
includes/goes green in noticeably less than nine minutes, without giving up a check that has ever caught something.🤖 Generated with Claude Code