Skip to content

ci: use native arm64 runners and dynamic matrix from images.json - #95

Merged
middelkoopt merged 3 commits into
warewulf:mainfrom
middelkoopt:tm-image-build-use-aarch64-runners
Jun 22, 2026
Merged

middelkoopt merged 3 commits into
warewulf:mainfrom
middelkoopt:tm-image-build-use-aarch64-runners

Conversation

@middelkoopt

Copy link
Copy Markdown
Contributor

Replace QEMU-emulated multi-arch builds with native runners:
linux/amd64 on ubuntu-latest, linux/arm64 on ubuntu-24.04-arm.

Introduce images.json as the single source of truth for all image
configurations. A new gen-matrix.py script generates both the build
matrix (images x arches) and merge matrix (images only) at workflow
runtime, so adding an image or arch requires editing only images.json.

The build job pushes single-platform images by content-addressed digest.
A separate merge job assembles the multi-arch manifest index with
imagetools create, then signs it with cosign via GitHub OIDC.

Also add oci-mediatypes=true to preserve index-level annotations on GHCR.

The tumbleweed image was failing due to qemu seg-faulting.
NOTE: This is on top of the update to EL9.8 and 10.2 PR #94

Rocky 9.8 and 10.2 Docker images have yet to be published.

AlmaLinux and tumbleweed containers pulled and tested on x86_64 and aarch64

middelkoopt and others added 2 commits June 18, 2026 14:10
* AlmaLinux 9: add 9.8 (fixed mirrors), keep 9.7 (vault)
* AlmaLinux 10: add 10.2 (fixed mirrors), keep 10.1 (vault)
* README: add openSUSE Tumbleweed, Debian, Ubuntu to built examples list
* Rocky Linux 9.8/10.2 upgrade

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Timothy Middelkoop <tmiddelkoop@internet2.edu>
Replace QEMU-emulated multi-arch builds with native runners:
linux/amd64 on ubuntu-latest, linux/arm64 on ubuntu-24.04-arm.

Introduce images.json as the single source of truth for all image
configurations. A new gen-matrix.py script generates both the build
matrix (images x arches) and merge matrix (images only) at workflow
runtime, so adding an image or arch requires editing only images.json.

The build job pushes single-platform images by content-addressed digest.
A separate merge job assembles the multi-arch manifest index with
imagetools create, then signs it with cosign via GitHub OIDC.

Also add oci-mediatypes=true to preserve index-level annotations on GHCR.

Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Timothy Middelkoop <tmiddelkoop@internet2.edu>
@middelkoopt
middelkoopt force-pushed the tm-image-build-use-aarch64-runners branch from e5d842b to b68430c Compare June 18, 2026 21:37
@middelkoopt

Copy link
Copy Markdown
Contributor Author

Updated Rocky 9.8 and 10.2 to #94 and here.

The images to build are once again defined in container-publish.yml (albeit
with inline-style syntax for readability) but the build job is now responsible
for constructing a manifest of digsts for the merge job to consume.

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
@anderbubble
anderbubble force-pushed the tm-image-build-use-aarch64-runners branch from 2aef434 to b68430c Compare June 21, 2026 18:40

@anderbubble anderbubble left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@middelkoopt I merged this all back into container-publish.yml and then had the build job export the digests to build for merge to consume. I kept the tabular-style encoding for images, but I think this makes it even cleaner. I'll approve it for now, but I'll leave it to you to merge in case you disagree.

edit: I did a walkthrough of this on YT as an experiment if you're interested. https://youtu.be/Q8mgqrJXDUk

@middelkoopt

Copy link
Copy Markdown
Contributor Author

Reviewed. Changes look much better, thanks for taking it over the line. The video helped.

@middelkoopt
middelkoopt merged commit 7b1c8a7 into warewulf:main Jun 22, 2026
55 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