Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-and-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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"]
Expand Down
10 changes: 7 additions & 3 deletions .packit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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:
Expand Down
8 changes: 6 additions & 2 deletions hack/os-image-map.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
3 changes: 3 additions & 0 deletions hack/provision-derived.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
34 changes: 34 additions & 0 deletions tmt/tests/booted/tap.nu
Original file line number Diff line number Diff line change
Expand Up @@ -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] {
Expand Down
8 changes: 3 additions & 5 deletions tmt/tests/booted/test-install-outside-container.nu
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions tmt/tests/booted/test-install-unified-flag.nu
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down