Skip to content

feat: build, test, and publish multi-arch (amd64 + arm64) images - #679

Merged
rjhenry merged 1 commit into
solidnerd:masterfrom
austinderrick:multi-arch
Oct 20, 2026
Merged

rjhenry merged 1 commit into
solidnerd:masterfrom
austinderrick:multi-arch

Conversation

@austinderrick

Copy link
Copy Markdown
Contributor

Refs #424

This publishes solidnerd/bookstack for linux/amd64 and linux/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-arm runners for public repositories, so each architecture is built and tested on its own runner, the approach @rjhenry asked for in #424:

  • build and e2e run as a matrix over amd64 (ubuntu-24.04) and arm64 (ubuntu-24.04-arm). Each arch uploads its own image-bookstack-<arch> tarball, and e2e loads it and runs make e2e natively.
  • master and release now run make e2e too, so nothing is pushed unless both architectures pass.
  • push builds linux/amd64,linux/arm64 and 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 and docker load in the push job are removed.
  • The e2e test container changes from appropriate/curl, which is amd64-only, to curlimages/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 build followed by make e2e builds an arm64 image, and BookStack serves /login to the curl check.

@rjhenry
rjhenry merged commit 09a1334 into solidnerd:master Oct 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants