Skip to content

feat: Implement multi-arch build orchestration and image index assembly#2170

Open
anchi205 wants to merge 1 commit intoshipwright-io:mainfrom
anchi205:multiarch-orchestration
Open

feat: Implement multi-arch build orchestration and image index assembly#2170
anchi205 wants to merge 1 commit intoshipwright-io:mainfrom
anchi205:multiarch-orchestration

Conversation

@anchi205
Copy link
Copy Markdown
Member

Changes

Generate per-platform PipelineTasks with architecture-specific nodeSelectors so each build runs on a matching node. Source code is bundled as an OCI artifact during source-acquisition and pulled on each platform node. Per-platform tasks suffix the output image tag with the platform to prevent registry GC from deleting intermediate images.

After all platform builds complete, an assemble-index task creates an OCI image index referencing each platform image. Result aggregation populates BuildRunStatus.PlatformResults with per-platform digest, size, vulnerabilities, and status, and sets ManifestDigest and Output.Digest to the index digest. Partial failure is tracked per platform so users can identify which architecture failed.

CLI flags --push-source-bundle and --assemble-index are added to the image-processing binary, consumed by the source-acquisition and assemble-index pipeline tasks respectively.

Related Issues

Fixes #2143
Fixes #2076

Type of PR

/kind feature

Submitter Checklist

  • Includes tests if functionality changed/was added
  • Includes docs if changes are user-facing
  • Kind label has been set
  • Release notes block has been filled in, or marked NONE

Release Notes

Multi-architecture container image builds. When spec.output.platforms is set, the controller runs parallel per-platform builds on architecture-matched nodes and assembles an OCI image index. Per-platform status, digest, and vulnerabilities are reported in status.platformResults.

Generate per-platform PipelineTasks with architecture-specific
nodeSelectors so each build runs on a matching node. Source code
is bundled as an OCI artifact during source-acquisition and pulled
on each platform node. Per-platform tasks suffix the output image
tag with the platform to prevent registry GC from deleting
intermediate images.

After all platform builds complete, an assemble-index task creates
an OCI image index referencing each platform image. Result
aggregation populates BuildRunStatus.PlatformResults with
per-platform digest, size, vulnerabilities, and status, and sets
ManifestDigest and Output.Digest to the index digest. Partial
failure is tracked per platform so users can identify which
architecture failed.

CLI flags --push-source-bundle and --assemble-index are added to
the image-processing binary, consumed by the source-acquisition
and assemble-index pipeline tasks respectively.

Closes shipwright-io#2143, closes shipwright-io#2076

Assisted-by: Cursor
Signed-off-by: Anchita Borah <anborah@redhat.com>
@openshift-ci openshift-ci Bot added kind/feature Categorizes issue or PR as related to a new feature. release-note Label for when a PR has specified a release note labels Apr 24, 2026
@openshift-ci openshift-ci Bot requested review from adambkaplan and qu1queee April 24, 2026 13:05
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented Apr 24, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign apoorvajagtap for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@pull-request-size pull-request-size Bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Apr 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/feature Categorizes issue or PR as related to a new feature. release-note Label for when a PR has specified a release note size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

[FEATURE] Implement Per-Arch Builds [FEATURE] Implement image index for multi-arch images

2 participants