From 043cc79e3012d89c9db72fe4d108e640634bb5ee Mon Sep 17 00:00:00 2001 From: John Eckersberg Date: Fri, 6 Feb 2026 11:38:49 -0500 Subject: [PATCH 1/2] ci: Update for Fedora 44 branching from rawhide Fedora 44 has branched from rawhide, so update the CI matrix accordingly: - Point fedora-44 images to :44 instead of :rawhide - Add fedora-45 as the new rawhide - Add fedora-44 to integration test matrix (BZ 2429501 is fixed) - Add fedora-44 to Packit COPR and TMT test targets - Re-enable rawhide Packit TMT tests (BZ 2429501 is fixed) Closes: #1985 Assisted-by: OpenCode (claude-opus-4-6) Signed-off-by: John Eckersberg --- .github/workflows/build-and-publish.yml | 2 +- .github/workflows/ci.yml | 5 ++--- .packit.yaml | 10 +++++++--- hack/os-image-map.json | 6 ++++-- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml index f5b339410..ea003dbef 100644 --- a/.github/workflows/build-and-publish.yml +++ b/.github/workflows/build-and-publish.yml @@ -18,7 +18,7 @@ jobs: publish-images: strategy: matrix: - test_os: [fedora-43, fedora-44, centos-9, centos-10] + test_os: [fedora-43, fedora-44, fedora-45, centos-9, centos-10] variant: [ostree, composefs-sealeduki-sdboot] exclude: # centos-9 UKI is experimental/broken (https://github.com/bootc-dev/bootc/issues/1812) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f3483d8a..ab21dfc7e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -127,7 +127,7 @@ jobs: strategy: fail-fast: false matrix: - test_os: [fedora-43, fedora-44, centos-9, centos-10] + test_os: [fedora-43, fedora-44, fedora-45, centos-9, centos-10] runs-on: ubuntu-24.04 @@ -159,8 +159,7 @@ jobs: strategy: fail-fast: false matrix: - # No fedora-44 due to https://bugzilla.redhat.com/show_bug.cgi?id=2429501 - test_os: [fedora-43, centos-9, centos-10] + test_os: [fedora-43, fedora-44, centos-9, centos-10] variant: [ostree, composefs] filesystem: ["ext4", "xfs"] bootloader: ["grub", "systemd"] diff --git a/.packit.yaml b/.packit.yaml index d57a14873..9bcfae7b2 100644 --- a/.packit.yaml +++ b/.packit.yaml @@ -43,6 +43,9 @@ jobs: - fedora-43-x86_64 - fedora-43-aarch64 - fedora-43-s390x + - fedora-44-x86_64 + - fedora-44-aarch64 + - fedora-44-s390x # Sanity check on secondary targets, fewer architectures just # because the chance that we break e.g. ppc64le *just* on # rawhide is basically nil. @@ -69,9 +72,10 @@ jobs: - centos-stream-10-aarch64 - fedora-43-x86_64 - fedora-43-aarch64 - # https://bugzilla.redhat.com/show_bug.cgi?id=2429501 - # - fedora-rawhide-x86_64 - # - fedora-rawhide-aarch64 + - fedora-44-x86_64 + - fedora-44-aarch64 + - fedora-rawhide-x86_64 + - fedora-rawhide-aarch64 tmt_plan: /tmt/plans/integration tf_extra_params: environments: diff --git a/hack/os-image-map.json b/hack/os-image-map.json index 80ab247c4..ed5340d33 100644 --- a/hack/os-image-map.json +++ b/hack/os-image-map.json @@ -6,13 +6,15 @@ "centos-10": "quay.io/centos-bootc/centos-bootc:stream10", "fedora-42": "quay.io/fedora/fedora-bootc:42", "fedora-43": "quay.io/fedora/fedora-bootc:43", - "fedora-44": "quay.io/fedora/fedora-bootc:rawhide" + "fedora-44": "quay.io/fedora/fedora-bootc:44", + "fedora-45": "quay.io/fedora/fedora-bootc:rawhide" }, "buildroot-base": { "centos-9": "quay.io/centos/centos:stream9", "centos-10": "quay.io/centos/centos:stream10", "fedora-42": "quay.io/fedora/fedora:42", "fedora-43": "quay.io/fedora/fedora:43", - "fedora-44": "quay.io/fedora/fedora:rawhide" + "fedora-44": "quay.io/fedora/fedora:44", + "fedora-45": "quay.io/fedora/fedora:rawhide" } } From c9223a7e288b64dea49bae6733e66a42f89c0aa8 Mon Sep 17 00:00:00 2001 From: Xiaofeng Wang Date: Fri, 13 Mar 2026 18:29:43 +0800 Subject: [PATCH 2/2] tests: Use OS-matched target image in install tests Add get_target_image function to tap.nu that selects the appropriate bootc target image based on the running OS. This avoids version mismatches (e.g., XFS features created by newer mkfs.xfs not recognized by older grub2). The function parses /usr/lib/os-release and looks up the image from hack/os-image-map.json, with fallbacks for missing configurations. Co-Authored-By: Claude Opus 4.5 Signed-off-by: Xiaofeng Wang --- hack/os-image-map.json | 6 ++-- hack/provision-derived.sh | 3 ++ tmt/tests/booted/tap.nu | 34 +++++++++++++++++++ .../booted/test-install-outside-container.nu | 8 ++--- tmt/tests/booted/test-install-unified-flag.nu | 6 ++-- 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/hack/os-image-map.json b/hack/os-image-map.json index ed5340d33..d2d3d065c 100644 --- a/hack/os-image-map.json +++ b/hack/os-image-map.json @@ -1,13 +1,15 @@ { "base": { "rhel-10.2": "images.paas.redhat.com/bootc/rhel-bootc:latest-10.2", + "rhel-10.3": "images.paas.redhat.com/bootc/rhel-bootc:latest-10.3", "rhel-9.8": "images.paas.redhat.com/bootc/rhel-bootc:latest-9.8", + "rhel-9.9": "images.paas.redhat.com/bootc/rhel-bootc:latest-9.9", "centos-9": "quay.io/centos-bootc/centos-bootc:stream9", "centos-10": "quay.io/centos-bootc/centos-bootc:stream10", "fedora-42": "quay.io/fedora/fedora-bootc:42", "fedora-43": "quay.io/fedora/fedora-bootc:43", "fedora-44": "quay.io/fedora/fedora-bootc:44", - "fedora-45": "quay.io/fedora/fedora-bootc:rawhide" + "fedora-45": "quay.io/fedora/fedora-bootc:45" }, "buildroot-base": { "centos-9": "quay.io/centos/centos:stream9", @@ -15,6 +17,6 @@ "fedora-42": "quay.io/fedora/fedora:42", "fedora-43": "quay.io/fedora/fedora:43", "fedora-44": "quay.io/fedora/fedora:44", - "fedora-45": "quay.io/fedora/fedora:rawhide" + "fedora-45": "quay.io/fedora/fedora:45" } } diff --git a/hack/provision-derived.sh b/hack/provision-derived.sh index c7f165729..59d9d15c6 100755 --- a/hack/provision-derived.sh +++ b/hack/provision-derived.sh @@ -136,6 +136,9 @@ if test -z "${SKIP_CONFIGS:-}"; then install -D -t /usr/lib/bootc/kargs.d test-kargs/* # Also copy in some default install configs we use for testing install -D -t /usr/lib/bootc/install/ install-test-configs/* + + # Install os-image-map.json for tests that need to select OS-matched images + install -D -m 0644 os-image-map.json /usr/share/bootc/os-image-map.json else echo "SKIP_CONFIGS is set, skipping LBIs, test kargs, and install configs" fi diff --git a/tmt/tests/booted/tap.nu b/tmt/tests/booted/tap.nu index 958d29a9d..686131079 100644 --- a/tmt/tests/booted/tap.nu +++ b/tmt/tests/booted/tap.nu @@ -19,6 +19,40 @@ export def is_composefs [] { $st.status.booted.composefs? != null } +# Get the target image for install tests based on the running OS +# This ensures the target image matches the host OS to avoid version mismatches +# (e.g., XFS features created by newer mkfs.xfs not recognized by older grub2) +export def get_target_image [] { + # Parse os-release to get ID and VERSION_ID + let os = open /usr/lib/os-release + | lines + | filter {|l| $l != "" and not ($l | str starts-with "#") } + | parse "{key}={value}" + | reduce -f {} {|it, acc| + $acc | upsert $it.key ($it.value | str trim -c '"') + } + + let key = $"($os.ID)-($os.VERSION_ID)" + + # Load the os-image-map.json - installed location in image + let map_path = "/usr/share/bootc/os-image-map.json" + + # If map not found, use default centos-9 image + if not ($map_path | path exists) { + return "docker://quay.io/centos-bootc/centos-bootc:stream9" + } + + let image_map = (open $map_path) + + let image = $image_map.base | get -i $key + if ($image | is-empty) { + # Fallback to centos-9 if key not found + $"docker://($image_map.base.centos-9)" + } else { + $"docker://($image)" + } +} + # Run a bootc install command in an isolated mount namespace. # This handles the common setup needed for install tests run outside a container. export def run_install [cmd: string] { diff --git a/tmt/tests/booted/test-install-outside-container.nu b/tmt/tests/booted/test-install-outside-container.nu index 27335399c..45f66372c 100644 --- a/tmt/tests/booted/test-install-outside-container.nu +++ b/tmt/tests/booted/test-install-outside-container.nu @@ -6,11 +6,9 @@ use std assert use tap.nu -# In this test we install a generic image mainly because it keeps -# this test in theory independent of starting from a bootc host, -# but also because it's useful to test "skew" between the bootc binary -# doing the install and the target image. -let target_image = "docker://quay.io/centos-bootc/centos-bootc:stream9" +# Use an OS-matched target image to avoid version mismatches +# (e.g., XFS features created by newer mkfs.xfs not recognized by older grub2) +let target_image = (tap get_target_image) # setup filesystem mkdir /var/mnt diff --git a/tmt/tests/booted/test-install-unified-flag.nu b/tmt/tests/booted/test-install-unified-flag.nu index c967bef85..e00ecb01a 100644 --- a/tmt/tests/booted/test-install-unified-flag.nu +++ b/tmt/tests/booted/test-install-unified-flag.nu @@ -12,9 +12,9 @@ use std assert use tap.nu -# Use a generic target image to test skew between the bootc binary doing -# the install and the target image -let target_image = "docker://quay.io/centos-bootc/centos-bootc:stream9" +# Use an OS-matched target image to avoid version mismatches +# (e.g., XFS features created by newer mkfs.xfs not recognized by older grub2) +let target_image = (tap get_target_image) def main [] { tap begin "install with experimental unified storage flag"