Cache what every CI job rebuilt, and fetch no map tiles in tests (#1033) #1083
No reviewers
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo!1083
Loading…
Reference in a new issue
No description provided.
Delete branch "1033-ci-workers"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Items 2, 3, 6 and 7 of the CI review, now that item 1 runs CI once per
push instead of three times and the host carries one browser and one unit
job at a time.
-n 2 --dist worksteal), theunit job on three, in both ci.yml and every-python.yml: five workers on
six cores. The comments say why two browser workers failed before (run
723, under three CI runs and a dev image), and that #1024's file-backed
live-server database was not on main when this changed. Three measured
green runs decide whether it stays.
every .po, the compiler, the language table and the version; the browser,
unit and PostgreSQL jobs compile only on a miss.
filter: blob:none: the guard reads trees for thechanged paths and fetches the few catalogues it reads. Forgejo
advertises
filter, and the repository is readable without a token.--with-depsliststhem for Debian 12 (bar xvfb), join WeasyPrint's in one apt run, and
playwright install chromiumdrops--with-deps. Not--only-shell:test_web_app.py starts the full Chromium.
collecting the whole suite; a test holds every file with a heavy test to
that list.
about the tiles ask for OpenStreetMap with a new
openstreetmapfixture.
Refs #1033
Notes for review
Draft until three measured green CI runs, as #1033 asks for items 2 and 3. Each run's wall time and job times get recorded in this PR before it merges.
-n 2 --dist worksteal. The earlier failures under two workers (run 723) came with three CI runs per push and the dev image on the same host, and that load is gone since #1072. #1024's file-backed live-server database (#1074) wasn't onmainwhen this changed.-n 3, in bothci.ymlandevery-python.yml..poand the tool;filter: blob:none; Forgejo advertises it);POSTULO_MAP_TILES = "none"), with anopenstreetmapfixture for the tests that are about tiles.🤖 Generated with Claude Code
Measured run 1 (run 1658): the browser job on two workers was green.
Unit job on three workers: failed, and the cause is memory, not the tests. The kernel killed two of the three workers at the same second (
[gw1]/[gw2] node down: Not properly terminated, about 75 % through). xdist then reported whichever tests they were holding. The job container is capped at 2 GB and each worker grows towards 1 GB (#830), so three don't fit.The unit job is now back on two workers. Item 3 stays open: it needs either a larger memory cap on the runner's job container (a host setting) or finding what makes each worker grow (for example the full-catalogue loads in
test_translations.py). The same memory pressure likely explains #1079's browser job being killed with exit 137.Still to go: two more measured green runs for item 2.
2a6fa3b94c26d8bad31f26d8bad31fd3579afbaaMeasured run 2 (run 1691, commit
d3579afba): green.For comparison, the browser suite took 33 to 42 minutes in one process on 27 and 28 October. One more measured green run to go.
d3579afbaa4e5d547e13Measured run 3 (commit
4e5d547e1, after #1085 put the unit job on three workers): red. The browser job on two workers failed four layout and timing tests:test_target_size,test_site_searchscripts-off panel,test_board_foldlong column at 640, andtest_every_pagephone dark. All four passed when run again alone. The job took 32 minutes against 24 on run 2. There were no database errors; this is CPU contention, with three unit workers, two browser workers and the PostgreSQL job on one six-core host.Item 2 fails its measurement. The browser step goes back to one process. Items 6 and 7 stay: the translation cache, the blobless checkout, the Chromium libraries, the heavy step by path, and no map tiles in tests. This PR then stops being a draft.
WIP: Run the browser suite on two workers and the unit suite on three, and trim CI's setup (#1033)to Cache what every CI job rebuilt, and fetch no map tiles in tests (#1033)4e5d547e137f064bfd47