Repository navigation
ci: build each architecture on a native runner - #60
Merged
Merged
Conversation
arm64 images were built under QEMU on amd64 runners. Compiling the PHP extensions of 8.5-symfony took 876 s for arm64 against 67 s for amd64, so the -symfony and -ci jobs ran 7-16 minutes. Each image is now built once per architecture, arm64 on ubuntu-24.04-arm (free for public repositories), and pushed untagged by digest. A publish job per image then tags the two digests as one multi-platform image, and refuses to if one architecture is missing. - Build cache: one GitHub Actions cache scope per image and architecture. All jobs shared the default scope and overwrote each other's cache; the last scheduled run reused none of it. - Pull requests that change the workflow rebuild every image, so CI changes are tested before they reach main. - Build timeout: 90 -> 30 minutes.
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.
arm64 images were built under QEMU on amd64 runners. In the last scheduled run, compiling the extensions of
8.5-symfonytook 876 s for arm64 vs 67 s for amd64, so the-symfony/-cijobs took 7–16 min.ubuntu-24.04andubuntu-24.04-arm(free for public repos). No more QEMU.Publish (<path>)job per image tags both digests as one multi-platform image withdocker buildx imagetools create. It refuses to move a tag if one architecture is missing, and still publishes the other images if one fails (!cancelled()).scope=<path>-<arch>. All 23 jobs shared the default scope and overwrote each other's cache; the last scheduled run reused 0 steps.CI passednow also needspublish, which is skipped on PRs.The image list is written once (
image: &images) and reused by the publish matrix through a YAML anchor.Checked: actionlint passes, and the publish script was dry-run with 0, 1 and 2 digests (fails, fails, builds the expected
imagetools create -t … -t … repo@sha256:… repo@sha256:…command). The build half runs on this PR; the publish half only runs onmain, so the first push after merging is the one to watch.#57 (PHP 8.6) also edits the image list and will need a rebase after this one.