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..d2d3d065c 100644 --- a/hack/os-image-map.json +++ b/hack/os-image-map.json @@ -1,18 +1,22 @@ { "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:rawhide" + "fedora-44": "quay.io/fedora/fedora-bootc:44", + "fedora-45": "quay.io/fedora/fedora-bootc:45" }, "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: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"