Skip to content

fix: publish multi-arch (amd64 + arm64) Docker image - #76

Merged
aliasunder merged 1 commit into
mainfrom
claude/vault-bootstrap-setup-TZgxO
Jun 8, 2026
Merged

fix: publish multi-arch (amd64 + arm64) Docker image#76
aliasunder merged 1 commit into
mainfrom
claude/vault-bootstrap-setup-TZgxO

Conversation

@aliasunder

@aliasunder aliasunder commented Jun 8, 2026

Copy link
Copy Markdown
Owner

Problem

deploy.yml builds the image for linux/amd64 only. Because the release build uses buildx/build-push-action@v7, the published :latest is a manifest list (index) that contains a single amd64 entry. On Apple Silicon (linux/arm64), docker compose pull then fails hard:

no matching manifest for linux/arm64/v8 in the manifest list entries

Unlike a plain single-arch image (which Docker runs under emulation with a warning), a manifest list without an arm64 entry makes Docker refuse to pull. So the local-quickstart audience — heavily Mac, especially for the Cline Marketplace — can't pull current code at all and gets pinned to whatever stale image is cached locally. (Surfaced live: a Mac was stuck running 0.12.1 and couldn't upgrade.)

Fix

  • Add docker/setup-qemu-action so the amd64 runner can cross-build arm64.
  • Build linux/amd64,linux/arm64.

The published index now carries both platforms: arm64 hosts pull natively, and amd64 (including the Lightsail deploy target) is unchanged. One-file change.

Notes / things to watch on the next release

  • Takes effect on the next release+deploydeploy.yml is workflow_call'd from the release workflows, so a release must run to rebuild and repush a multi-arch :latest. This is a fix: commit, so it should auto-cut a patch release on merge.
  • Build time — arm64 cross-build runs under QEMU and better-sqlite3 compiles from source on Alpine/musl (the Dockerfile already carries python3 make g++ for this). Expect a noticeably longer release build.
  • Verify after the release: confirm mcp-publisher still reads the io.modelcontextprotocol.server.name label off the now multi-arch manifest in publish-registry.yml, and that :latest pulls natively on arm64.

🤖 Generated with Claude Code


Generated by Claude Code

Summary by CodeRabbit

  • Chores
    • Enhanced deployment infrastructure to support additional processor architectures (ARM64), enabling the application to run on a broader range of devices and systems.

deploy.yml built linux/amd64 only, so the published manifest list carries
no arm64 entry. On Apple Silicon, `docker compose pull` of :latest fails
hard with "no matching manifest for linux/arm64/v8" — the local-quickstart
audience (heavily Mac, esp. for the Cline Marketplace) can't pull current
code at all and gets pinned to a stale cached image.

Add docker/setup-qemu-action so the amd64 runner can cross-build arm64, and
build both platforms. The published index now carries amd64 + arm64; arm64
hosts pull natively, amd64 (incl. the Lightsail deploy target) is unchanged.

Generated with Claude Code
Co-authored-by: Claude <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

The deployment workflow is updated to build and push Docker images for multiple architectures. QEMU support is added to enable cross-platform builds, and the Docker build configuration now targets both AMD64 and ARM64 platforms instead of only AMD64.

Changes

Multi-architecture Docker builds

Layer / File(s) Summary
QEMU setup and multi-arch platform configuration
.github/workflows/deploy.yml
QEMU emulation is enabled via docker/setup-qemu-action@v3, and Docker build platforms are expanded from linux/amd64 to linux/amd64,linux/arm64 for multi-architecture image publishing.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 Multi-arch builds, here we go!
AMD and ARM, both in tow,
QEMU magic makes it flow—
Two platforms run, our images glow! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'fix: publish multi-arch (amd64 + arm64) Docker image' clearly and accurately summarizes the main change: enabling multi-architecture Docker image publishing for both amd64 and arm64 architectures.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/vault-bootstrap-setup-TZgxO

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@aliasunder
aliasunder merged commit ab59159 into main Jun 8, 2026
5 of 6 checks passed
@aliasunder
aliasunder deleted the claude/vault-bootstrap-setup-TZgxO branch June 8, 2026 16:55
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