Skip to content

Conversation

@Tazer
Copy link
Member

@Tazer Tazer commented Jan 16, 2026

Summary

  • Add multi_arch input (default: false) to all Docker workflows for gradual rollout
  • Implement matrix strategy for parallel builds on native amd64 and arm64 runners
  • Create new create-manifest action that combines platform-specific images into a single manifest
  • Maintain backward compatibility by always creating manifests (single-arch when multi_arch=false)

Changes

File Description
create-manifest/action.yml NEW - Creates Docker manifests, auto-detects available platforms
build-publish-docker/action.yml Push intermediate images with arch suffix, manifest creates final tag
build-image/action.yml Create platform-specific artifacts for artifact-based builds
load-image-publish/action.yml Handle single/multi-arch manifests with multi_arch input
docker-service.yml Add matrix strategy and manifest creation job
docker-api-service.yml Add matrix strategy and manifest creation jobs
docker-service-build.yml Add matrix strategy for artifact builds

How it works

Intermediate images (internal, not consumed directly):

  • oneclick-123-amd64 - amd64 platform image
  • oneclick-123-arm64 - arm64 platform image (only when multi_arch=true)

Final manifest tag (what consumers use - unchanged):

  • oneclick-123 → manifest pointing to available platform images
multi_arch Images Built Manifest Contains Final Tag (unchanged)
false (default) amd64 only amd64 oneclick-123
true amd64 + arm64 both oneclick-123

Test plan

  • Verify existing workflows continue to work with multi_arch=false (default)
  • Verify final tags remain backward compatible (e.g., oneclick-123 without arch suffix)
  • Test with multi_arch=true once arm64 runner (ubuntu-arm64-latest) is available
  • Verify manifest creation works for both single-arch and multi-arch cases

🤖 Generated with Claude Code

- Add `multi_arch` input (default: false) to workflows for gradual rollout
- Add matrix strategy for parallel builds on native amd64/arm64 runners
- Create new `create-manifest` action for combining platform-specific images
- Update `build-publish-docker` to push images with arch suffix
- Update `build-image` to create platform-specific artifacts
- Update `load-image-publish` to handle single/multi-arch manifests

When multi_arch=false (default): only amd64 is built, manifest created
with just amd64, preserving backward-compatible tags (e.g., oneclick-123)

When multi_arch=true: both amd64 and arm64 built in parallel,
multi-arch manifest created pointing to both images

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@Tazer Tazer requested a review from a team as a code owner January 16, 2026 14:06
Tazer and others added 5 commits January 16, 2026 15:06
Temporarily point all action references to the feature branch for testing
before merging to main.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The matrix context is not available in job-level `if` conditions
for reusable workflows. Moving the condition to step-level where
matrix context is available.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Pass through the multi_arch input to load-image-publish action
so it can properly handle multi-arch artifact publishing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ch is disabled

Use fromJSON to dynamically build the matrix based on multi_arch input.
When multi_arch=false (default), only amd64 runner is launched.
When multi_arch=true, both amd64 and arm64 runners are launched.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Use custom job name to keep 'build-service' for amd64 builds and only
add '-arm64' suffix for arm64 builds. This maintains backward
compatibility with existing required checks configuration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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