Skip to content

ci(docker): publish multi-architecture images - #432

Open
neobuilds wants to merge 1 commit into
CoreBunch:mainfrom
neobuilds:feat/multi-arch-image
Open

ci(docker): publish multi-architecture images#432
neobuilds wants to merge 1 commit into
CoreBunch:mainfrom
neobuilds:feat/multi-arch-image

Conversation

@neobuilds

Copy link
Copy Markdown

Summary

  • build release images in parallel on native AMD64 and ARM64 GitHub-hosted runners
  • push each platform image by digest, then merge the digests into the existing semver, minor, and latest tags
  • preserve the existing image job output consumed by the release-bundle job
  • document the multi-architecture release boundary without retroactively describing old tags as ARM64-compatible
  • announce native ARM64 image support in the in-progress 0.0.17 changelog
  • add a focused regression test for the native-runner and manifest-merge contract

Why

Instatic originally configured QEMU-based AMD64 + ARM64 publishing, then intentionally limited releases to AMD64 in b8dda9ac because emulated ARM64 publishing made the tagged workflow too slow.

This follows the repository's documented intended fix: each architecture builds on a separate native GitHub-hosted runner (ubuntu-latest and ubuntu-24.04-arm). The final job merges the platform digests into one OCI image index, so the release gate does not run the application build under QEMU.

Verification

  • fork CI — Build & Typecheck, Lint, and Test passed on the submitted head
  • actionlint .github/workflows/release.yml — passed
  • focused Docker/release tests — 11 passed, 0 failed
  • bun run lint — passed
  • bun run build — passed
  • AMD64 runtime: SQLite, Sharp PNG encoding, esbuild transform, non-root user, and /health passed
  • ARM64 runtime under QEMU: SQLite, Sharp PNG encoding, esbuild transform, non-root user, and /health passed
  • local-registry digest merge produced one OCI index containing linux/amd64 and linux/arm64
  • docker buildx build --check --platform linux/amd64,linux/arm64 . — passed with no warnings
  • git diff --check — passed

The tag-triggered GHCR publication cannot be exercised end to end from the fork because the workflow intentionally publishes to the upstream corebunch package namespace. The platform images, native runtime dependencies, and manifest-merge operation were verified separately as listed above.

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