Skip to content

ci: Stricter pattern matching for image download - #38

Merged
maxmoehl merged 1 commit into
ironcore-dev:mainfrom
mkalcok:ci-artifact-download
Apr 22, 2026
Merged

ci: Stricter pattern matching for image download#38
maxmoehl merged 1 commit into
ironcore-dev:mainfrom
mkalcok:ci-artifact-download

Conversation

@mkalcok

@mkalcok mkalcok commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

gardenlinux releases from 2150.1.0 [0] started including file .logs.tar.xz in its artifacts. This file matched our pattern that searches for the image itself, causing our CI jobs to fail[1].

The new regexp should match only the image itself, disregarding logs, or any other additional artifact that might be included in the future.

[0] https://github.com/gardenlinux/gardenlinux/releases/tag/2150.1.0
[1] https://github.com/ironcore-dev/os-images/actions/runs/24617135043/job/71981127138

gardenlinux releases from 2150.1.0 [0] started including file
<release>.logs.tar.xz in its artifacts. This file matched our pattern
that searches for the image itself, causing our CI jobs to fail[1].

The new regexp should match only the image itself, disregarding logs, or
any other additional artifact that might be included in the future.

[0] https://github.com/gardenlinux/gardenlinux/releases/tag/2150.1.0
[1] https://github.com/ironcore-dev/os-images/actions/runs/24617135043/job/71981127138

Signed-off-by: Martin Kalcok <martin.kalcok@sap.com>
@mkalcok
mkalcok requested a review from a team April 22, 2026 14:03
@mkalcok

mkalcok commented Apr 22, 2026

Copy link
Copy Markdown
Contributor Author

Manual testing with the updated regexp passes locally.

"Fetch artifacts from Github release" step adapted to a bash script:

#!/usr/bin/env bash
set -xeuo pipefail

VERSION="2150.1.0"
IMAGE="ghcr.io/ironcore-dev/gardenlinux"

test_run() {
  asset_pattern=$1; shift
  variant=$1; shift
  ASSETS=$(curl -s \
    "https://api.github.com/repos/gardenlinux/gardenlinux/releases/tags/$VERSION" \
    | jq -r '.assets[].name')

  for ARCH in amd64 arm64; do
    ASSET=$(echo "$ASSETS" | grep -E "^$asset_pattern-$ARCH-[0-9]+\.[0-9]+\.[0-9]+-[0-9a-f]+\.tar\.xz$" | head -1)
    if [ -z "$ASSET" ]; then
      echo "::error::Could not find asset matching $asset_pattern-$ARCH-*.tar.xz"
      exit 1
    fi

    # The asset base name (without .tar.xz) is the prefix for all
    # files inside the archive.
    ASSET_BASE="${ASSET%.tar.xz}"

    echo "Downloading $ASSET"
    mkdir -p "artifacts/${ARCH}"
    curl -sL "https://github.com/gardenlinux/gardenlinux/releases/download/${VERSION}/${ASSET}" \
      -o "artifacts/${ARCH}/${ASSET}"

    echo "Extracting $ASSET"
    tar -xf "artifacts/${ARCH}/${ASSET}" -C "artifacts/${ARCH}"
    rm "artifacts/${ARCH}/${ASSET}"

    if [ "$variant" = "kvm" ]; then
      RAW_FILE="artifacts/${ARCH}/${ASSET_BASE}.raw"
      if [ ! -f "$RAW_FILE" ]; then
        echo "::error::Expected .raw file not found at ${RAW_FILE}"
        exit 1
      fi
      echo "KVM_${ARCH^^}_RAW=${RAW_FILE}" >> "$GITHUB_ENV"
    else
      # Metal: extract the nested PXE tarball to get initrd, vmlinuz, root.squashfs.
      PXE_TARBALL="artifacts/${ARCH}/${ASSET_BASE}.pxe.tar.gz"
      if [ ! -f "$PXE_TARBALL" ]; then
        echo "::error::Could not find nested PXE tarball at ${PXE_TARBALL}"
        exit 1
      fi
      tar -xzf "$PXE_TARBALL" -C "artifacts/${ARCH}"

      for BIN in initrd vmlinuz root.squashfs; do
        if [ ! -f "artifacts/${ARCH}/${BIN}" ]; then
  	echo "::error::Could not find ${BIN} for ${ARCH}"
  	exit 1
        fi
      done

      echo "METAL_${ARCH^^}_DIR=artifacts/${ARCH}" >> "GITHUB_ENV"
      echo "METAL_${ARCH^^}_ASSET_BASE=${ASSET_BASE}" >> "GITHUB_ENV"
    fi
  done
}

test_run baremetal_pxe metal

results:

+ VERSION=2150.1.0
+ IMAGE=ghcr.io/ironcore-dev/gardenlinux
+ test_run baremetal_pxe metal
+ asset_pattern=baremetal_pxe
+ shift
+ variant=metal
+ shift
++ curl -s https://api.github.com/repos/gardenlinux/gardenlinux/releases/tags/2150.1.0
++ jq -r '.assets[].name'
+ ASSETS=$'ali-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nali-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_fips_prod-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_fips_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_fips_prod-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_fips_prod-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-capi-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-capi-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-capi-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-capi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_pxe-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_pxe-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_pxe-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_pxe-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-vhost-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-vhost-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-vhost-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-vhost-arm64-2150.1.0-22239d41.tar.xz\nbaremetal_pxe-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal_pxe-amd64-2150.1.0-22239d41.tar.xz\nbaremetal_pxe-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal_pxe-arm64-2150.1.0-22239d41.tar.xz\ncontainer-amd64-2150.1.0-22239d41.logs.tar.xz\ncontainer-amd64-2150.1.0-22239d41.tar.xz\ncontainer-arm64-2150.1.0-22239d41.logs.tar.xz\ncontainer-arm64-2150.1.0-22239d41.tar.xz\ncontainer-pythonDev-amd64-2150.1.0-22239d41.logs.tar.xz\ncontainer-pythonDev-amd64-2150.1.0-22239d41.tar.xz\ncontainer-pythonDev-arm64-2150.1.0-22239d41.logs.tar.xz\ncontainer-pythonDev-arm64-2150.1.0-22239d41.tar.xz\ngardenlinux-cpe.json\ngcp-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\ngdch-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\ngdch-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\ngdch-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\ngdch-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nlima-amd64-2150.1.0-22239d41.logs.tar.xz\nlima-amd64-2150.1.0-22239d41.tar.xz\nlima-arm64-2150.1.0-22239d41.logs.tar.xz\nlima-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nvmware-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nvmware-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nvmware-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nvmware-gardener_prod-arm64-2150.1.0-22239d41.tar.xz'
+ for ARCH in amd64 arm64
++ echo $'ali-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nali-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_fips_prod-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_fips_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_fips_prod-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_fips_prod-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-capi-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-capi-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-capi-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-capi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_pxe-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_pxe-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_pxe-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_pxe-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-vhost-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-vhost-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-vhost-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-vhost-arm64-2150.1.0-22239d41.tar.xz\nbaremetal_pxe-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal_pxe-amd64-2150.1.0-22239d41.tar.xz\nbaremetal_pxe-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal_pxe-arm64-2150.1.0-22239d41.tar.xz\ncontainer-amd64-2150.1.0-22239d41.logs.tar.xz\ncontainer-amd64-2150.1.0-22239d41.tar.xz\ncontainer-arm64-2150.1.0-22239d41.logs.tar.xz\ncontainer-arm64-2150.1.0-22239d41.tar.xz\ncontainer-pythonDev-amd64-2150.1.0-22239d41.logs.tar.xz\n++ grep -E '^baremetal_pxe-amd64-[0-9]+\.[0-9]+\.[0-9]+-[0-9a-f]+\.tar\.xz$'
container-pythonDev-amd64-2150.1.0-22239d41.tar.xz\ncontainer-pythonDev-arm64-2150.1.0-22239d41.logs.tar.xz\ncontainer-pythonDev-arm64-2150.1.0-22239d41.tar.xz\ngardenlinux-cpe.json\ngcp-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\ngdch-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\ngdch-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\ngdch-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\ngdch-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nlima-amd64-2150.1.0-22239d41.logs.tar.xz\nlima-amd64-2150.1.0-22239d41.tar.xz\nlima-arm64-2150.1.0-22239d41.logs.tar.xz\nlima-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nvmware-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nvmware-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nvmware-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nvmware-gardener_prod-arm64-2150.1.0-22239d41.tar.xz'
++ head -1
+ ASSET=baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz
+ '[' -z baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz ']'
+ ASSET_BASE=baremetal_pxe-amd64-2150.1.0-22239d41
+ echo 'Downloading baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz'
Downloading baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz
+ mkdir -p artifacts/amd64
+ curl -sL https://github.com/gardenlinux/gardenlinux/releases/download/2150.1.0/baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz -o artifacts/amd64/baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz
+ echo 'Extracting baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz'
Extracting baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz
+ tar -xf artifacts/amd64/baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz -C artifacts/amd64
+ rm artifacts/amd64/baremetal_pxe-amd64-2150.1.0-22239d41.tar.xz
+ '[' metal = kvm ']'
+ PXE_TARBALL=artifacts/amd64/baremetal_pxe-amd64-2150.1.0-22239d41.pxe.tar.gz
+ '[' '!' -f artifacts/amd64/baremetal_pxe-amd64-2150.1.0-22239d41.pxe.tar.gz ']'
+ tar -xzf artifacts/amd64/baremetal_pxe-amd64-2150.1.0-22239d41.pxe.tar.gz -C artifacts/amd64
+ for BIN in initrd vmlinuz root.squashfs
+ '[' '!' -f artifacts/amd64/initrd ']'
+ for BIN in initrd vmlinuz root.squashfs
+ '[' '!' -f artifacts/amd64/vmlinuz ']'
+ for BIN in initrd vmlinuz root.squashfs
+ '[' '!' -f artifacts/amd64/root.squashfs ']'
+ echo METAL_AMD64_DIR=artifacts/amd64
+ echo METAL_AMD64_ASSET_BASE=baremetal_pxe-amd64-2150.1.0-22239d41
+ for ARCH in amd64 arm64
++ echo $'ali-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nali-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_fips_prod-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_fips_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_fips_prod-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_fips_prod-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\naws-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\naws-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nazure-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nazure-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-capi-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-capi-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-capi-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-capi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_pxe-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_pxe-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-gardener_pxe-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-gardener_pxe-arm64-2150.1.0-22239d41.tar.xz\nbaremetal-vhost-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-vhost-amd64-2150.1.0-22239d41.tar.xz\nbaremetal-vhost-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal-vhost-arm64-2150.1.0-22239d41.tar.xz\nbaremetal_pxe-amd64-2150.1.0-22239d41.logs.tar.xz\nbaremetal_pxe-amd64-2150.1.0-22239d41.tar.xz\nbaremetal_pxe-arm64-2150.1.0-22239d41.logs.tar.xz\nbaremetal_pxe-arm64-2150.1.0-22239d41.tar.xz\ncontainer-amd64-2150.1.0-22239d41.logs.tar.xz\ncontainer-amd64-2150.1.0-22239d41.tar.xz\ncontainer-arm64-2150.1.0-22239d41.logs.tar.xz\ncontainer-arm64-2150.1.0-22239d41.tar.xz\ncontainer-pythonDev-amd64-2150.1.0-22239d41.logs.tar.xz\ncontainer-pythonDev-amd64-2150.1.0-22239d41.tar.xz\ncontainer-pythonDev-arm64-2150.1.0-22239d41.logs.tar.xz\ncontainer-pythonDev-arm64-2150.1.0-22239d41.tar.xz\ngardenlinux-cpe.json\ngcp-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\ngcp-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\ngcp-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\ngdch-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\ngdch-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\ngdch-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\ngdch-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nkvm-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nkvm-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nlima-amd64-2150.1.0-22239d41.logs.tar.xz\nlima-amd64-2150.1.0-22239d41.tar.xz\nlima-arm64-2150.1.0-22239d41.logs.tar.xz\nlima-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener-metal_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener-metal_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.certs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.certs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_tpm2_trustedboot-arm64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_usi-amd64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_usi-amd64-2150.1.0-22239d41.tar.xz\nopenstack-gardener_prod_usi-arm64-2150.1.0-22239d41.logs.tar.xz\nopenstack-gardener_prod_usi-arm64-2150.1.0-22239d41.tar.xz\nvmware-gardener_prod-amd64-2150.1.0-22239d41.logs.tar.xz\nvmware-gardener_prod-amd64-2150.1.0-22239d41.tar.xz\nvmware-gardener_prod-arm64-2150.1.0-22239d41.logs.tar.xz\nvmware-gardener_prod-arm64-2150.1.0-22239d41.tar.xz'
++ grep -E '^baremetal_pxe-arm64-[0-9]+\.[0-9]+\.[0-9]+-[0-9a-f]+\.tar\.xz$'
++ head -1
+ ASSET=baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz
+ '[' -z baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz ']'
+ ASSET_BASE=baremetal_pxe-arm64-2150.1.0-22239d41
+ echo 'Downloading baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz'
Downloading baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz
+ mkdir -p artifacts/arm64
+ curl -sL https://github.com/gardenlinux/gardenlinux/releases/download/2150.1.0/baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz -o artifacts/arm64/baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz
+ echo 'Extracting baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz'
Extracting baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz
+ tar -xf artifacts/arm64/baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz -C artifacts/arm64
+ rm artifacts/arm64/baremetal_pxe-arm64-2150.1.0-22239d41.tar.xz
+ '[' metal = kvm ']'
+ PXE_TARBALL=artifacts/arm64/baremetal_pxe-arm64-2150.1.0-22239d41.pxe.tar.gz
+ '[' '!' -f artifacts/arm64/baremetal_pxe-arm64-2150.1.0-22239d41.pxe.tar.gz ']'
+ tar -xzf artifacts/arm64/baremetal_pxe-arm64-2150.1.0-22239d41.pxe.tar.gz -C artifacts/arm64
+ for BIN in initrd vmlinuz root.squashfs
+ '[' '!' -f artifacts/arm64/initrd ']'
+ for BIN in initrd vmlinuz root.squashfs
+ '[' '!' -f artifacts/arm64/vmlinuz ']'
+ for BIN in initrd vmlinuz root.squashfs
+ '[' '!' -f artifacts/arm64/root.squashfs ']'
+ echo METAL_ARM64_DIR=artifacts/arm64
+ echo METAL_ARM64_ASSET_BASE=baremetal_pxe-arm64-2150.1.0-22239d41

@maxmoehl

Copy link
Copy Markdown
Member

Let's give it a spin

@maxmoehl
maxmoehl merged commit e8d9541 into ironcore-dev:main Apr 22, 2026
1 check passed
@mkalcok

mkalcok commented Apr 22, 2026

Copy link
Copy Markdown
Contributor Author

@hardikdr hardikdr added the area/metal-automation Automation processes within the Metal project. label Apr 23, 2026
@hardikdr hardikdr added this to Roadmap Apr 23, 2026
@github-project-automation github-project-automation Bot moved this to Done in Roadmap Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/metal-automation Automation processes within the Metal project.

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants