CI: run what a change needs, and the browser profiles in parallel #366

Merged
littlefox merged 4 commits from issue-358-ci-speed into main 2026-10-27 22:45:42 +00:00
Owner

Closes #358

  • plan job (tools/ci-plan.py, unit-tested): compares the commit with the nearest commits that passed CI (via the API, with the job token) and skips jobs none of the changed files concern. Unknown files run everything; manual and nightly runs on main run everything.
  • The three browser profiles run as parallel jobs, each building the web app itself.
  • Run #636 (with a separate build job): 27.9 min; run #639 (build in each job): see issue comment. Before: 36-40 min.
  • D-070, DESIGN "What runs when", CLAUDE.md updated.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8

Closes #358 - `plan` job (`tools/ci-plan.py`, unit-tested): compares the commit with the nearest commits that passed CI (via the API, with the job token) and skips jobs none of the changed files concern. Unknown files run everything; manual and nightly runs on main run everything. - The three browser profiles run as parallel jobs, each building the web app itself. - Run #636 (with a separate build job): 27.9 min; run #639 (build in each job): see issue comment. Before: 36-40 min. - D-070, DESIGN "What runs when", CLAUDE.md updated. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
Refs #358

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
CI: run what a change needs, and the browser profiles in parallel
All checks were successful
ci / plan (push) Successful in 1m40s
ci / web-build (push) Successful in 8m19s
ci / check (push) Successful in 11m42s
ci / desktop (push) Successful in 14m50s
ci / e2e (android) (push) Successful in 14m7s
ci / e2e (desktop) (push) Successful in 16m54s
ci / e2e (iphone) (push) Successful in 17m53s
4375c549fc
A run took 36-40 minutes and every PR needs two. The three browser
profiles ran one after another (30 of those minutes) though each has
its own server, and most main runs re-tested a tree its branch had
already passed.

Now a plan job compares the commit with the nearest commits that passed
CI and skips the jobs none of the changed files concern; unknown files
run everything, and a nightly run on main runs everything. The web app
is built once and each profile gets its own job.

Refs #358

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
CI: each browser job builds the web app itself
All checks were successful
ci / plan (push) Successful in 2m0s
ci / check (push) Successful in 10m38s
ci / e2e (android) (push) Successful in 18m25s
ci / desktop (push) Successful in 19m38s
ci / e2e (iphone) (push) Successful in 20m40s
ci / e2e (desktop) (push) Successful in 22m22s
perf / perf (pull_request) Has been skipped
0c6c2ef71b
Run #636 took 28 minutes: every job spends 3-4 minutes starting on the
shared runners, and plan -> web-build -> e2e paid that three times plus
the artifact hand-over. Building in each browser job costs 4 minutes of
parallel CPU and saves a job start.

Refs #358

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XJW2ocwLunyaLiUwCBHEP8
littlefox referenced this pull request from a commit 2026-10-28 15:15:36 +00:00
Sign in to join this conversation.
No description provided.