Image: build the stylesheet and the catalogues once, natively #1231
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!1231
Loading…
Reference in a new issue
No description provided.
Delete branch "b9-1142"
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?
The image builds what does not depend on the architecture once, natively, and a translation-only commit no longer rebuilds its stylesheet. Two signed commits; merge fast-forward-only.
stylesruns on$BUILDPLATFORM, and a newcataloguesstage on$BUILDPLATFORMcompiles the message catalogues once (with its own native uv, since aCOPY --from=<image>resolves for the target platform); the build stage copies the compiled tree instead of compiling under arm64 emulation (233 s in run 1901).collectstaticstays where it is. Nothing fromnode_modulesleavesstyles.styles_sourcestage copiessrcand removes the catalogue directories, so the filesnpm run build:cssis given are byte-identical across a translation-only commit and its layer is served from cache.COPY --excludewas not used: it needs Dockerfile frontend 1.19 and the runner's BuildKit version is unknown.Tested:
tests/test_image_build.pypins the new shape (its new tests fail on the old Dockerfile), with the supply-chain, workflow, ignore-file and shell-script tests. Not built: there is no Docker where this was written and no pull-request job builds the image, so the first build is the dev image after the merge. What to look for there:[linux/amd64 styles…]and[linux/amd64 catalogues…]steps and none for arm64,COPY --from=cataloguesin the arm64 build, and no compile under arm64. If it fails, reverting the two commits (each independently) restores the old Dockerfile.🤖 Generated with Claude Code