From 8e0edef7c295b3dc34ecde4bee5fad7a73a9ee22 Mon Sep 17 00:00:00 2001 From: Josh Siviour Date: Sun, 7 Jun 2026 21:57:03 +1000 Subject: [PATCH] ci: install kmod (depmod) before microVM image build (e2e + nightly + ddil) (#307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci(e2e): install kmod (depmod) before microVM image build #305 made depmod a hard requirement in build-microvm-image.sh, but the self-hosted ci-single/ci-multi runners don't ship the kmod package, so the Build Install Artifacts step aborts with 'required tool not found: depmod' before any E2E suite runs. Add an idempotent kmod install ahead of each Build Install Artifacts step (single/multi/eks jobs); the gold-image builder bakes kmod in too, so this no-ops once runners pick up the new image. * ci: install kmod (depmod) in nightly + ddil too e2e-nightly and e2e-ddil call the same build-install-artifacts.sh (-> make build-microvm-image) on the same self-hosted ci-single/ci-multi runners as e2e.yml, so they hit the identical 'depmod not found' abort. Add the same idempotent kmod guard before Build Install Artifacts in both. release distro builds run on GitHub-hosted ubuntu (kmod present); e2e-baremetal runs on ci-baremetal which already has it (green today) — neither needs the guard. --- .github/workflows/e2e-ddil.yml | 8 ++++++++ .github/workflows/e2e-nightly.yml | 9 +++++++++ .github/workflows/e2e.yml | 24 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/.github/workflows/e2e-ddil.yml b/.github/workflows/e2e-ddil.yml index a7fde3c24..f1bdfbe0a 100644 --- a/.github/workflows/e2e-ddil.yml +++ b/.github/workflows/e2e-ddil.yml @@ -76,6 +76,14 @@ jobs: echo "${BIN_DIR}" >> "${GITHUB_PATH}" "${BIN_DIR}/gotestsum" --version + - name: Install kmod (depmod) + # build-microvm-image's mandatory-tool preflight requires depmod (from + # the kmod package); self-hosted runners don't ship it. Idempotent — + # no-op once baked into the runner/gold image. + run: | + command -v depmod >/dev/null 2>&1 || \ + { sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends kmod; } + - name: Build Install Artifacts working-directory: mulga/scripts/tofu-cluster run: | diff --git a/.github/workflows/e2e-nightly.yml b/.github/workflows/e2e-nightly.yml index 39282bbd0..88b0feb14 100644 --- a/.github/workflows/e2e-nightly.yml +++ b/.github/workflows/e2e-nightly.yml @@ -78,6 +78,15 @@ jobs: sparse-checkout: scripts/tofu-cluster path: mulga + - name: Install kmod (depmod) + if: steps.gate.outputs.selected == 'true' + # build-microvm-image's mandatory-tool preflight requires depmod (from + # the kmod package); self-hosted runners don't ship it. Idempotent — + # no-op once baked into the runner/gold image. + run: | + command -v depmod >/dev/null 2>&1 || \ + { sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends kmod; } + - name: Build Install Artifacts if: steps.gate.outputs.selected == 'true' working-directory: mulga/scripts/tofu-cluster diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 9a9aa78ec..203525797 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -113,6 +113,14 @@ jobs: docker buildx prune -af --filter "until=24h" || true docker system df || true + - name: Install kmod (depmod) + # build-microvm-image's mandatory-tool preflight requires depmod (from + # the kmod package) to generate modules.dep; self-hosted runners don't + # ship it. Idempotent — no-op once baked into the runner/gold image. + run: | + command -v depmod >/dev/null 2>&1 || \ + { sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends kmod; } + - name: Build Install Artifacts working-directory: mulga/scripts/tofu-cluster run: | @@ -512,6 +520,14 @@ jobs: docker buildx prune -af --filter "until=24h" || true docker system df || true + - name: Install kmod (depmod) + # build-microvm-image's mandatory-tool preflight requires depmod (from + # the kmod package) to generate modules.dep; self-hosted runners don't + # ship it. Idempotent — no-op once baked into the runner/gold image. + run: | + command -v depmod >/dev/null 2>&1 || \ + { sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends kmod; } + - name: Build Install Artifacts working-directory: mulga/scripts/tofu-cluster run: | @@ -928,6 +944,14 @@ jobs: docker buildx prune -af --filter "until=24h" || true docker system df || true + - name: Install kmod (depmod) + # build-microvm-image's mandatory-tool preflight requires depmod (from + # the kmod package) to generate modules.dep; self-hosted runners don't + # ship it. Idempotent — no-op once baked into the runner/gold image. + run: | + command -v depmod >/dev/null 2>&1 || \ + { sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends kmod; } + - name: Build Install Artifacts working-directory: mulga/scripts/tofu-cluster run: |