Skip to content

Add native ARM64 gateway and runner images#1785

Open
theonlypal wants to merge 1 commit into
beam-cloud:mainfrom
theonlypal:codex/fix-1760-arm64-support
Open

Add native ARM64 gateway and runner images#1785
theonlypal wants to merge 1 commit into
beam-cloud:mainfrom
theonlypal:codex/fix-1760-arm64-support

Conversation

@theonlypal

@theonlypal theonlypal commented Jul 18, 2026

Copy link
Copy Markdown

Description

This PR completes #1760 by publishing native ARM64 gateway and runner images alongside AMD64 and assembling stable multi-platform manifests. Worker images and CLI release binaries already supported ARM64; this closes the remaining official-image gaps and removes the gateway's AMD64-only JuiceFS installation path.

Changes

  • Build gateway release and dispatch images natively on AMD64 and ARM64.
  • Publish versioned, latest, and custom-tag gateway manifests only after both architectures succeed.
  • Add an ARM64-safe JuiceFS installation path while preserving the existing Beam-pinned AMD64 build.
  • Build every Python and Micromamba runner variant natively on AMD64 and ARM64.
  • Publish versioned, latest, and custom-tag runner multi-platform manifests.
  • Keep Helm chart and BYOC publication behind successful dual-architecture gateway builds.
  • Correct stale workflow job names and remove invalid legacy build-push inputs in the modified release paths.

Kubernetes can now resolve the correct gateway, worker, and runner image architecture from the unsuffixed multi-platform tags, including mixed-architecture clusters, without requiring architecture-specific Helm values.

Verification

  • Actionlint passes all four modified workflows.
  • Workflow topology assertions confirm both architecture matrices, build dependencies, and manifest coverage for all runner variants.
  • Gateway, worker, and agent cross-compile for linux/amd64 and linux/arm64.
  • The complete ARM64 gateway production image builds and runs JuiceFS 1.3.1 and mount-s3 1.5.0.
  • The AMD64 gateway base image builds successfully and preserves the existing Beam-pinned JuiceFS path.
  • All ten ARM64 runner variants build and execute with their expected Python versions.
  • go test ./pkg/... passes.
  • SDK suite passes with 201 tests and 2 intentional skips.
  • git diff --check passes.

Closes #1760


Summary by cubic

Adds native ARM64 builds for the gateway and all runner images, and publishes multi-platform manifests so Kubernetes pulls the correct architecture automatically. Also adds an ARM64-safe juicefs install and gates Helm/BYOC publish on dual-arch success. Closes #1760.

  • New Features

    • Build gateway and all Python/Micromamba runners natively for linux/amd64 and linux/arm64.
    • Publish versioned, latest, and custom multi-platform manifests after both architectures succeed.
    • Add ARM64-safe juicefs install in docker/Dockerfile.gateway; keep the AMD64 Beam-pinned path.
    • Clean up workflows: corrected job names and removed invalid legacy inputs.
  • Migration

    • No arch-specific Helm values needed; use unsuffixed tags and Kubernetes selects the right image.
    • Mixed-architecture clusters work without changes.

Written for commit 335ad4e. Summary will update on new commits.

Review in cubic

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.

Feature Request: Native ARM64 (arm64/aarch64) support

1 participant