Skip to content

Add linux/arm64 support to Docker images (Track 1: multi-arch alpine) - #382

Open
ibrahim halatci (ihalatci) wants to merge 3 commits into
masterfrom
ihalatci-arm64-docker-image
Open

Add linux/arm64 support to Docker images (Track 1: multi-arch alpine)#382
ibrahim halatci (ihalatci) wants to merge 3 commits into
masterfrom
ihalatci-arm64-docker-image

Conversation

@ihalatci

Copy link
Copy Markdown
Contributor

What

Adds linux/arm64 support to the Citus alpine Docker image via Docker Buildx, and adds a smoke-test workflow to validate arm64 alpine builds. Driven by citusdata/citus#8612.

This is Track 1 of a two-track effort. The alpine image compiles Citus from source, so arm64 works today via buildx. (Track 2 — Debian images — is blocked on upstream arm64 .deb packages and is not part of this PR.)

Changes

  • 4 publish workflows (publish_docker_images_{on_push,cron,on_manual,on_tag}.yml):
    • Pin the citusdata/tools clone to v0.8.38 — the stable tag containing the buildx multi-arch engine from citusdata/tools#414.
    • Add QEMU + Docker Buildx setup steps.
    • Add DOCKER_BUILD_MULTI_ARCH env: master-gated ('1' on master, '0' elsewhere) on the on_push/cron wildcard triggers so feature-branch pushes stay amd64-fast; always "1" on the publish-only on_manual/on_tag paths.
  • arm64-alpine-smoke.yml: new workflow_dispatch-only smoke test that builds the alpine image for linux/arm64 and runs a basic container check.

The engine only emits linux/amd64,linux/arm64 for the alpine image type and when DOCKER_BUILD_MULTI_ARCH is truthy — so all other image types and the default path are unchanged (amd64 only).

Validation

  • All 5 workflows YAML-validated.
  • arm64 alpine build validated earlier via the smoke workflow.
  • After merge, the first master push publishes multi-arch alpine; verify with:
    docker buildx imagetools inspect citusdata/citus:alpine
    
    and confirm it lists both linux/amd64 and linux/arm64.

Related work items

ihalatci-msft and others added 3 commits July 21, 2026 17:17
Dispatch-only workflow that builds the alpine image natively on
ubuntu-24.04-arm and verifies Citus compiles, loads, and runs on arm64.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 52d4e780-cd8c-405c-8944-5e3167ae4e59
Branch-scoped push trigger to exercise the arm64 runner + native build.
To be removed before merge to master (workflow stays dispatch-only).

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 52d4e780-cd8c-405c-8944-5e3167ae4e59
Pin the 4 docker-publish workflows to citusdata/tools v0.8.38 (buildx
engine with multi-arch support) and wire QEMU + Buildx setup. Gate arm64
via DOCKER_BUILD_MULTI_ARCH: master-gated on push/cron, always on for
manual/tag publish paths. Revert arm64-alpine-smoke.yml to dispatch-only.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 52d4e780-cd8c-405c-8944-5e3167ae4e59
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