Skip to content

ci: arm64 multi-arch image (tag/dispatch gated)#508

Merged
mfaferek93 merged 2 commits into
mainfrom
ci/gateway-arm64
Jul 11, 2026
Merged

ci: arm64 multi-arch image (tag/dispatch gated)#508
mfaferek93 merged 2 commits into
mainfrom
ci/gateway-arm64

Conversation

@mfaferek93

@mfaferek93 mfaferek93 commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Adds a native-runner multi-arch (linux/amd64 + linux/arm64) image publish for the gateway.

What

  • New workflow .github/workflows/docker-publish-multiarch.yml.
  • Builds each arch on its own native runner (arm64 on ubuntu-24.04-arm, no QEMU), pushes by digest, then a per-distro merge job stitches the digests into one multi-arch manifest and tags it.
  • Mirrors the ros2_medkit_web_ui digest + manifest-merge pattern, extended with the ros_distro build-arg dimension (jazzy, humble, lyrical).

Gating

  • Triggers on push to v* tags and workflow_dispatch ONLY. NOT on pull_request or push-to-main.
  • The existing docker-publish.yml (amd64-only, push-to-main) is left untouched, so per-PR / push-to-main CI stays fast (no emulated arm64 on every change).

Feasibility

  • Verified ros:{jazzy,humble,lyrical}-ros-base all publish linux/arm64/v8 manifests, so arm64 builds are feasible. No base-image blocker.

Add native-runner multi-arch (amd64+arm64) publish for the gateway,
gated on v* tags and workflow_dispatch only. Existing amd64-only
docker-publish.yml (per-PR/push-to-main) is untouched so PR CI stays fast.
Mirrors ros2_medkit_web_ui digest+manifest-merge pattern, extended with
the ros_distro build-arg dimension.
Copilot AI review requested due to automatic review settings July 8, 2026 20:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new release/dispatch-gated GitHub Actions workflow to publish multi-arch (linux/amd64 + linux/arm64) Docker images for the gateway to GHCR, building each architecture on native runners and then merging per-arch digests into a single manifest list per ROS distro.

Changes:

  • Introduces .github/workflows/docker-publish-multiarch.yml to build/push per-arch images by digest for each ROS distro (jazzy/humble/lyrical).
  • Adds a merge job that downloads digests and creates a per-distro multi-arch manifest list with semver/major-minor/latest/sha tags.
  • Limits triggering to v* tags and workflow_dispatch to avoid slowing regular CI.

@mfaferek93 mfaferek93 marked this pull request as draft July 9, 2026 15:32
@mfaferek93 mfaferek93 self-assigned this Jul 9, 2026
@mfaferek93 mfaferek93 marked this pull request as ready for review July 10, 2026 17:06
@mfaferek93 mfaferek93 requested a review from bburda July 10, 2026 17:21
Comment thread .github/workflows/docker-publish-multiarch.yml Outdated
The multi-arch publish tagged :latest on every trigger, including
pre-release tags (v*-rc/-alpha) and workflow_dispatch. Guard the raw
latest tag with enable= so it only applies on a stable vX.Y.Z tag.
@mfaferek93 mfaferek93 merged commit 9f3b6bf into main Jul 11, 2026
12 checks passed
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