Repository navigation
feat: build, test, and publish multi-arch (amd64 + arm64) images - #679
Merged
Merged
Conversation
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.
Refs #424
This publishes
solidnerd/bookstackforlinux/amd64andlinux/arm64, and runs the e2e test on both architectures before anything is pushed.The earlier arm64 attempt (#321) was reverted because the e2e test could not run on ARM. GitHub now offers native
ubuntu-24.04-armrunners for public repositories, so each architecture is built and tested on its own runner, the approach @rjhenry asked for in #424:ubuntu-24.04) and arm64 (ubuntu-24.04-arm). Each arch uploads its ownimage-bookstack-<arch>tarball, and e2e loads it and runsmake e2enatively.make e2etoo, so nothing is pushed unless both architectures pass.linux/amd64,linux/arm64and reads the layers the build jobs wrote to the GitHub Actions cache (type=gha, one scope per arch), so the arm64 layers come from the native build instead of a rebuild under QEMU. The unused artifact download anddocker loadin the push job are removed.appropriate/curl, which is amd64-only, tocurlimages/curl:8.23.0, which publishes arm64. The other images involved (php:8.5-apache-trixie,alpine:3,mysql:26.7) already publish arm64.Tested locally on an arm64 Mac:
make buildfollowed bymake e2ebuilds an arm64 image, and BookStack serves/loginto the curl check.