Skip to content

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

Merged
ibrahim halatci (ihalatci) merged 4 commits into
masterfrom
ihalatci-arm64-docker-image
Sep 1, 2026
Merged

Add linux/arm64 support to Docker images (Track 1: multi-arch alpine)#382
ibrahim halatci (ihalatci) merged 4 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
@ihalatci
ibrahim halatci (ihalatci) merged commit b257473 into master Sep 1, 2026
16 of 17 checks passed
@ihalatci
ibrahim halatci (ihalatci) deleted the ihalatci-arm64-docker-image branch September 1, 2026 12:52
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.

3 participants