Skip to content

feat: add arm container image in the lifecycle manager pipeline#61

Merged
gunamata merged 22 commits intoSUSE:mainfrom
leooamaral:feat/add-arm-lifecycle
Feb 20, 2026
Merged

feat: add arm container image in the lifecycle manager pipeline#61
gunamata merged 22 commits intoSUSE:mainfrom
leooamaral:feat/add-arm-lifecycle

Conversation

@leooamaral
Copy link
Contributor

@leooamaral leooamaral commented Feb 19, 2026

What changed

This PR adds multi-architecture container support (amd64 + arm64) to the SUSE AI Lifecycle Manager extension pipeline.

Since the Rancher packaging script (yarn publish-pkgs) does not support specifying a target platform (e.g. --platform linux/amd64,linux/arm64), it is not possible to build a multi-arch image in a single step using docker buildx.

To work around this limitation, the pipeline was redesigned to:

  1. Build the image natively on an amd64 runner
  2. Build the image natively on an arm64 runner
  3. Push both architecture-specific images
  4. Create and push a multi-arch manifest that references both images

Resulting Image Tags

When the pipeline runs for a release (e.g. 1.0.0), it now produces:

  • 1.0.0-amd64→ architecture-specific image
  • 1.0.0-arm64 → architecture-specific image
  • 1.0.0 → multi-arch manifest referencing both

The 1.0.0 tag is the canonical tag and should be used by consumers.
Kubernetes will automatically pull the correct image variant based on node architecture.

Future Improvement

Added this comment in the Tech Debt: Make extension script allow for multiarch builds (airgapped arm image) - GitHub Issue to suggest supporting --platform in the shell/scripts/extension/publish, so the pipeline could be simplified to a single job building and pushing the multi-arch image directly.


- name: Create multi-arch manifest
run: |
VERSION=$(echo "${GITHUB_REF_NAME}" | sed 's/^.*-//')
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is there a reason VERSION is extracted from git ref here whereas VERSION is extracted from package.json at other places in the workflow?

Copy link
Contributor Author

@leooamaral leooamaral Feb 19, 2026

Choose a reason for hiding this comment

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

Actually, I see that there are places where the version is coming from the git tag and another is coming from package.json, so I will change the pipeline to follow a common place

build-extension:
name: Build Container Image and Helm Chart
runs-on: ubuntu-latest
build-amd64:
Copy link
Collaborator

Choose a reason for hiding this comment

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

Instead of having build-amd64, build-arm64 can we do something like this?
https://github.com/rancher-sandbox/rancher-desktop-rdx-open-webui/blob/main/.github/workflows/build.yaml#L26

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Unfortunately, this is not supported.

Since the Rancher packaging script (yarn publish-pkgs) does not support specifying a target platform (e.g. --platform linux/amd64,linux/arm64), it is not possible to build a multi-arch image in a single step using docker buildx.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

But I made some changes to remove code duplication and use matrix job

@leooamaral leooamaral marked this pull request as ready for review February 20, 2026 14:49
@gunamata gunamata merged commit ec4465f into SUSE:main Feb 20, 2026
4 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.

2 participants