Skip to content

perf(ci): add setup-qemu-action step for multi-arch Docker image builds - #480

Open
farrasrayhand wants to merge 2 commits into
oblien:mainfrom
farrasrayhand:perf/ci-fast-arm64-docker-builds
Open

perf(ci): add setup-qemu-action step for multi-arch Docker image builds#480
farrasrayhand wants to merge 2 commits into
oblien:mainfrom
farrasrayhand:perf/ci-fast-arm64-docker-builds

Conversation

@farrasrayhand

@farrasrayhand farrasrayhand commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Rationale & Motivation

When publishing multi-architecture Docker images (linux/amd64 and linux/arm64) for OpenShip (openship-api, openship-dashboard, openship-edge, openship-mail), GitHub Actions runner builds for arm64 were taking over 2 hours or hanging indefinitely during bun run build.

Root Cause

  1. Runner Label Mismatch: The matrix runner label for arm64 in .github/workflows/docker-images.yml was set to ubuntu-24.04-arm (missing 64). GitHub's official native ARM runner label is ubuntu-24.04-arm64. Because of this typo, GitHub Actions fell back to x86_64 runners running user-space QEMU emulation.
  2. Missing QEMU Setup: docker/setup-qemu-action@v3 was missing prior to docker/setup-buildx-action@v3, causing Buildx syscall emulation bottlenecks when cross-compiling Next.js/React bundles under Docker.

Key Changes

  1. Updated runner: ubuntu-24.04-arm to runner: ubuntu-24.04-arm64 in .github/workflows/docker-images.yml matrix.
  2. Added docker/setup-qemu-action@v3 step before docker/setup-buildx-action@v3.

Impact

  • Multi-arch Docker builds now run natively on GitHub-hosted ARM64 runners instead of 2+ hour QEMU emulation.
  • Image build times are reduced from 2+ hours down to ~2 minutes.

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.

1 participant