ci: arm64 multi-arch image (tag/dispatch gated)#508
Merged
Conversation
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.
Contributor
There was a problem hiding this comment.
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.ymlto 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 andworkflow_dispatchto avoid slowing regular CI.
bburda
reviewed
Jul 10, 2026
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.
bburda
approved these changes
Jul 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a native-runner multi-arch (linux/amd64 + linux/arm64) image publish for the gateway.
What
.github/workflows/docker-publish-multiarch.yml.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.ros2_medkit_web_uidigest + manifest-merge pattern, extended with theros_distrobuild-arg dimension (jazzy, humble, lyrical).Gating
pushtov*tags andworkflow_dispatchONLY. NOT on pull_request or push-to-main.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
ros:{jazzy,humble,lyrical}-ros-baseall publishlinux/arm64/v8manifests, so arm64 builds are feasible. No base-image blocker.