Skip to content

GHA: add arm64 kubevirt and nvidia-jp7 build/publish coverage#5907

Merged
eriknordmark merged 5 commits into
lf-edge:masterfrom
europaul:publish-jp7
May 21, 2026
Merged

GHA: add arm64 kubevirt and nvidia-jp7 build/publish coverage#5907
eriknordmark merged 5 commits into
lf-edge:masterfrom
europaul:publish-jp7

Conversation

@europaul
Copy link
Copy Markdown
Contributor

@europaul europaul commented May 6, 2026

Description

Expands CI coverage for the kubevirt (HV=k) hypervisor on arm64 and the new nvidia-jp7 (Jetson JetPack 7) platform across both the build and publish workflows.

The PR contains three commits, each described in its own commit message; a quick summary:

  • publish.yml — restructure into staged jobs that mirror the shape of build.yml. Stage 1 (pkgs-amd64, pkgs-arm64) builds the generic package set once per architecture; stage 2 (eve) pulls these from the registry and only rebuilds the HV/platform-specific delta on top. Adds nvidia-jp7 to the matrix (kvm and k). Collapses build/push step pairs into single LINUXKIT_PKG_TARGET=push invocations so retries skip already-pushed images. Drops the pull-only Docker Hub login, since pulls now go through a pull-through mirror that handles authentication transparently.

  • tools/parse-pkgs.sh — add EXTERNAL_BOOT_IMAGE_TAG. pkg/external-boot-image is required to build HV=k, so its tag needs to be tracked alongside the other package tags.

  • build.yml — add four new arm64 eve build jobs: eve-arm64-k-generic, eve-arm64-k-nvidia-jp6, eve-arm64-k-nvidia-jp7, and eve-arm64-kvm-nvidia-jp7 (the last one for parity with publish.yml).

How to test and validate this PR

The publish workflow was already tested on rene/eve https://github.com/rene/eve/actions/runs/25392062779
All EVE variants got published to the local registy:

0.0.0-master-5c60faa1-evaluation-kvm
0.0.0-master-5c60faa1-evaluation-kvm-amd64
0.0.0-master-5c60faa1-k
0.0.0-master-5c60faa1-k-amd64
0.0.0-master-5c60faa1-k-arm64
0.0.0-master-5c60faa1-kvm
0.0.0-master-5c60faa1-kvm-amd64
0.0.0-master-5c60faa1-kvm-arm64
0.0.0-master-5c60faa1-mini
0.0.0-master-5c60faa1-mini-riscv64
0.0.0-master-5c60faa1-nvidia-jp5-k
0.0.0-master-5c60faa1-nvidia-jp5-k-arm64
0.0.0-master-5c60faa1-nvidia-jp5-kvm
0.0.0-master-5c60faa1-nvidia-jp5-kvm-arm64
0.0.0-master-5c60faa1-nvidia-jp6-k
0.0.0-master-5c60faa1-nvidia-jp6-k-arm64
0.0.0-master-5c60faa1-nvidia-jp6-kvm
0.0.0-master-5c60faa1-nvidia-jp6-kvm-arm64
0.0.0-master-5c60faa1-nvidia-jp7-k
0.0.0-master-5c60faa1-nvidia-jp7-k-arm64
0.0.0-master-5c60faa1-nvidia-jp7-kvm
0.0.0-master-5c60faa1-nvidia-jp7-kvm-arm64
0.0.0-master-5c60faa1-xen
0.0.0-master-5c60faa1-xen-amd64
0.0.0-master-5c60faa1-xen-arm64

Changelog notes

Adds CI build and publish coverage for the nvidia-jp7 (Jetson JetPack 7) platform and for the kubevirt hypervisor variant on arm64. No runtime/user-facing behaviour change beyond the availability of additional published EVE image variants.

PR Backports

  • 16.0-stable: No — nvidia-jp7 platform support is not present in this branch.
  • 14.5-stable: No — nvidia-jp7 platform support is not present in this branch.
  • 13.4-stable: No — nvidia-jp7 platform support is not present in this branch.

Checklist

  • I've provided a proper description
  • I've added the proper documentation
  • I've tested my PR on amd64 device
  • I've tested my PR on arm64 device
  • I've written the test verification instructions
  • I've set the proper labels to this PR

And the last but not least:

  • I've checked the boxes above, or I've provided a good reason why I didn't check them.

@github-actions github-actions Bot requested review from jsfakian and uncleDecart May 6, 2026 13:30
@europaul europaul force-pushed the publish-jp7 branch 2 times, most recently from ade6482 to 88013ae Compare May 6, 2026 14:16
@codecov
Copy link
Copy Markdown

codecov Bot commented May 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 21.07%. Comparing base (aa6798d) to head (f2053e6).
⚠️ Report is 6 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5907      +/-   ##
==========================================
+ Coverage   20.64%   21.07%   +0.42%     
==========================================
  Files         489      499      +10     
  Lines       90373    92071    +1698     
==========================================
+ Hits        18656    19401     +745     
- Misses      70138    70911     +773     
- Partials     1579     1759     +180     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@europaul europaul marked this pull request as draft May 11, 2026 09:30
@github-actions github-actions Bot requested a review from zedi-pramodh May 12, 2026 08:59
@europaul europaul marked this pull request as ready for review May 15, 2026 10:52
@europaul
Copy link
Copy Markdown
Contributor Author

@rene @eriknordmark this is ready to merge

Copy link
Copy Markdown
Contributor

@eriknordmark eriknordmark left a comment

Choose a reason for hiding this comment

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

Let's try it in master.

Copy link
Copy Markdown
Contributor

@eriknordmark eriknordmark left a comment

Choose a reason for hiding this comment

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

Where are we using EXTERNAL_BOOT_IMAGE_TAG? grep -r doesn't find it.
I think we had something like this in eve-k/kubevirt earlier but that it was removed.

europaul added 5 commits May 20, 2026 14:38
Mirror the staged job structure of build.yml. The previous workflow ran
a single matrix job per arch/hv/platform that rebuilt all base packages
from scratch on every entry. The new structure has three explicit
stages:

  Stage 1 (pkgs-amd64, pkgs-arm64): build and push the generic package
    set once per architecture.
  Stage 2 (eve): one matrix entry per arch/hv/platform variant. Each
    pulls the generic packages from the registry and only rebuilds the
    HV/platform-specific delta on top, then builds the EVE image.
  Stage 3 (manifest, trigger_assets): multi-arch manifests and release
    assets.

Add nvidia-jp7 (kvm and k) to the eve matrix.

Collapse the separate 'build' and 'push' steps into single
LINUXKIT_PKG_TARGET=push calls. Linuxkit's push target checks the
registry first and skips images already pushed, so retrying after a
mid-pipeline failure does not rebuild already-published packages.

Drop the pull-only Docker Hub login. Pulls now go through a
pull-through mirror that handles authentication transparently, so a
single release login per job is sufficient.

Signed-off-by: Paul Gaiduk <paulg@zededa.com>
Add four new eve build jobs for arm64:
  - eve-arm64-k-generic
  - eve-arm64-k-nvidia-jp6
  - eve-arm64-k-nvidia-jp7
  - eve-arm64-kvm-nvidia-jp7

All four reuse pkgs-arm64-generic and the linuxkit-cache-arm64-generic
artifact, following the existing pattern for arm64 eve jobs.

Signed-off-by: Paul Gaiduk <paulg@zededa.com>
publish.yml now builds five additional eve image variants that were
not represented in the release-asset matrix:

  arm64 / nvidia-jp7 / kvm
  arm64 / generic    / k
  arm64 / nvidia-jp5 / k
  arm64 / nvidia-jp6 / k
  arm64 / nvidia-jp7 / k

Add them so the release pipeline uploads installer / rootfs / live /
sources for these variants alongside the existing ones on tagged
builds.

Signed-off-by: Paul Gaiduk <paulg@zededa.com>
… errors

A partition layout that doesn't fit the pre-sized disk previously
surfaced only as a buried sgdisk error several calls deep, with the
container exiting silently. Add a pre-flight check using the existing
calc_image_size helper, and wrap the make-raw call in runme.sh so the
requested size and partition list are reported on failure.

Signed-off-by: Paul Gaiduk <paulg@zededa.com>
installer.raw, live.raw, and the eve-sources docker export can
exceed GitHub's 2 GiB release asset limit. Compress all three
with zstd before upload (typical 5-20x ratio for sparse raw disk
images; substantial savings on the sources tar as well).

The eve-sources output was named collected_sources.tar.gz but was
a raw tar (never gzipped), so rename it to collected_sources.tar
and let zstd produce collected_sources.tar.zst. Also rename the
surrounding step to reflect that it only exports — publication
happens later in the upload step.

The upload loop now tracks failures and exits non-zero so a failed
upload no longer silently passes the job.

Signed-off-by: Paul Gaiduk <paulg@zededa.com>
@europaul
Copy link
Copy Markdown
Contributor Author

Where are we using EXTERNAL_BOOT_IMAGE_TAG? grep -r doesn't find it. I think we had something like this in eve-k/kubevirt earlier but that it was removed.

@eriknordmark sorry, it was a leftover from testing on a fork. I dropped that commit.

Copy link
Copy Markdown
Contributor

@eriknordmark eriknordmark left a comment

Choose a reason for hiding this comment

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

LGTM

@eriknordmark eriknordmark merged commit 614efc1 into lf-edge:master May 21, 2026
48 of 52 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