Skip to content

USHIFT-6547: Add RHEL 10 CI lane#6318

Closed
vanhalenar wants to merge 5 commits intoopenshift:mainfrom
vanhalenar:dual-lane
Closed

USHIFT-6547: Add RHEL 10 CI lane#6318
vanhalenar wants to merge 5 commits intoopenshift:mainfrom
vanhalenar:dual-lane

Conversation

@vanhalenar
Copy link
Contributor

@vanhalenar vanhalenar commented Mar 6, 2026

built on top of this PR bumping release tests to 10.2, should be merged after.

will need rebase after release tests bump to 9.8 is merged, draft for now.

Summary by CodeRabbit

  • New Features

    • Added new test scenarios and build support for RHEL 10.2 bootc image variants.
    • Restructured build orchestration with OS-specific conditional handling for different release stages.
  • Bug Fixes

    • Disabled incompatible serial simulator builds in release candidates to address kernel-devel dependency issues.
  • Tests

    • Updated test infrastructure to use RHEL 10.2 images across periodic and release test suites.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 6, 2026
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 6, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 6, 2026

@vanhalenar: This pull request references USHIFT-6547 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

built on top of this PR bumping release tests to 10.2, should be merged after.

will need rebase after release tests bump to 9.8 is merged, draft for now.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 6, 2026

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Mar 6, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: vanhalenar
Once this PR has been reviewed and has the lgtm label, please assign jogeo for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@coderabbitai
Copy link

coderabbitai bot commented Mar 6, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro

Run ID: c1633ff9-b918-4264-8a33-4c6a5d32e5c1

📥 Commits

Reviewing files that changed from the base of the PR and between 447b84e and 31aac72.

📒 Files selected for processing (1)
  • test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel102-bootc-source-isolated.image-bootc
✅ Files skipped from review due to trivial changes (1)
  • test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel102-bootc-source-isolated.image-bootc

Walkthrough

Updates bootc image build infrastructure to use RHEL 10.2 base images (rhel102) instead of RHEL 10.0 (rhel100) across containerfiles and test scenarios. Restructures the CI build phase script to employ OS-specific conditional blocks for layer building. Adds a new periodic layer containerfile with qemu-guest-agent and microshift image embedding. Disables serial simulator build steps in certain layer variants.

Changes

Cohort / File(s) Summary
CI Build Phase Script
test/bin/ci_phase_iso_build.sh
Restructures bootc image build orchestration from flat per-layer execution to OS-aware conditional blocks for el9 and el10, with dedicated handling for periodic, release, and upstream build variants.
Container Layer 1-base Image Updates
test/image-blueprints-bootc/el10/layer1-base/group2/*
Updates base image references from rhel100-test-agent to rhel102-test-agent in three containerfiles (isolated, optionals, and standard variants).
Container Layer 2-presubmit Updates
test/image-blueprints-bootc/el10/layer2-presubmit/group{1,2}/*
Updates base image from rhel100 to rhel102; disables serial simulator build step in optionals variant by commenting out related COPY and RUN instructions.
Container Layer 3-periodic Periodic Build
test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile, test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel102-bootc-source-isolated.image-bootc
Introduces new containerfile with qemu-guest-agent installation, microshift image embedding via release-info JSON parsing, systemd drop-in configuration, and corresponding image-bootc manifest entry.
Container Layer 4-release Updates
test/image-blueprints-bootc/el10/layer4-release/group{1,2}/*
Updates base images from rhel100-test-agent to rhel102-test-agent; disables serial simulator build in optional variant; adds conditional image tag rendering for lrel-optional variant.
Periodic Scenario Test Updates
test/scenarios-bootc/el10/periodics/el*@*
Updates boot source and blueprint references from rhel100 to rhel102 across multiple periodic test scenarios; adds generic-device-plugin skip flag in optional scenario.
Presubmit Scenario Test Updates
test/scenarios-bootc/el10/presubmits/el*@*
Updates TARGET_REF from rhel100-bootc-source to rhel102-bootc-source in upgrade scenarios; adds new presubmit scenario script for el98 to el102 upgrade path.
Release Scenario Test Updates
test/scenarios-bootc/el10/releases/el102-lrel@*
Updates start_image and boot_blueprint references from rhel100 to rhel102; updates expected OS version from 10.0 to 10.2; adds generic-device-plugin skip flag in optional release scenario.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: adding a RHEL 10 CI lane, which aligns with the changeset of updating CI build logic, containerfiles, and test scenarios to support RHEL 10.2.
Stable And Deterministic Test Names ✅ Passed This pull request does not add or modify any Ginkgo test files. Changes are limited to CI orchestration shell scripts, container image definitions, and Robot Framework scenario scripts.
Test Structure And Quality ✅ Passed This custom check is not applicable to the provided pull request. The PR modifies CI build scripts, container image definitions, and test scenario configurations (shell scripts and configuration files), but does not introduce or modify any Ginkgo test code.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

$(dry_run) bash -x ./bin/build_bootc_images.sh -l ./image-blueprints-bootc/el9/layer3-periodic
fi
if [[ "${CI_JOB_NAME}" =~ .*release.* ]]; then
$(dry_run) bash -x ./bin/build_bootc_images.sh -l ./image-blueprints-bootc/el9/layer4-release
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's not duplicate the code. Deternine the ${os} variable and let's have the same build command sequence.

@ggiguash
Copy link
Contributor

ggiguash commented Mar 7, 2026

@coderabbitai perform full review

@coderabbitai
Copy link

coderabbitai bot commented Mar 7, 2026

@ggiguash Sure, triggering a full review of this PR now!

✅ Actions performed

Full review triggered.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 7, 2026

@vanhalenar: This pull request references USHIFT-6547 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

built on top of this PR bumping release tests to 10.2, should be merged after.

will need rebase after release tests bump to 9.8 is merged, draft for now.

Summary by CodeRabbit

  • Tests
  • Updated test infrastructure to support RHEL 10.2 testing across multiple build layers and scenarios.
  • Restructured CI build process to handle multiple OS versions with explicit per-OS build strategies.
  • Added new RHEL 10.2-specific test configurations and removed deprecated RHEL 10.0 variants.
  • Enhanced test scenarios for upgrade paths and optional feature testing.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
test/scenarios-bootc/el10/releases/el102-lrel@optional.sh (1)

36-46: ⚠️ Potential issue | 🟠 Major

Missing --skip generic-device-plugin flag.

The periodic test el102-src@optional.sh adds --skip generic-device-plugin due to kernel-devel unavailability, but this release test doesn't. Since the containerfile rhel102-bootc-brew-lrel-optional.containerfile also disables build-serialsim.sh, the generic device plugin test will likely fail here.

Proposed fix
     # TODO: Skip sriov on RHEL 10 until USHIFT-6400 is resolved.
     local skip_args="--skip sriov"
     if [[ "${UNAME_M}" =~ aarch64 ]]; then
         skip_args="--skip sriov"
     fi
+    # Skip generic device plugin on RHEL 10 until we can get the correct kernel-devel package.
+    skip_args+=" --skip generic-device-plugin"
     # shellcheck disable=SC2086
     run_tests host1 \
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/scenarios-bootc/el10/releases/el102-lrel`@optional.sh around lines 36 -
46, Add the missing skip for the generic device plugin by appending "--skip
generic-device-plugin" to the skip_args used in the run_tests invocation: update
the skip_args variable (currently set in the block that defines local
skip_args="--skip sriov" and the conditional for aarch64) so it includes "--skip
generic-device-plugin" (e.g., skip_args="--skip sriov --skip
generic-device-plugin") before the run_tests host1 call, ensuring the
shellcheck-disabled expansion ${skip_args} passes the new flag to run_tests.
test/scenarios-bootc/el10/releases/el102-lrel@standard1.sh (1)

33-33: ⚠️ Potential issue | 🟡 Minor

OS version mismatch: EXPECTED_OS_VERSION is 10.0 but images are 10.2.

The start_image and boot_blueprint reference rhel102 assets, but EXPECTED_OS_VERSION is still "10.0". Should this be "10.2" to match the updated images?

Proposed fix
     run_tests host1 \
-        --variable "EXPECTED_OS_VERSION:10.0" \
+        --variable "EXPECTED_OS_VERSION:10.2" \
         suites/standard1/
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/scenarios-bootc/el10/releases/el102-lrel`@standard1.sh at line 33,
Update the EXPECTED_OS_VERSION variable to match the rhel102 images: change the
value of EXPECTED_OS_VERSION from "10.0" to "10.2" so it aligns with the
referenced rhel102 assets used by start_image and boot_blueprint; ensure the
--variable "EXPECTED_OS_VERSION:10.2" token is updated wherever set in the
script.
🧹 Nitpick comments (3)
test/image-blueprints-bootc/el10/layer2-presubmit/group2/rhel102-bootc-source-optionals.containerfile (1)

32-34: Track this temporary test disablement explicitly.

These lines remove the serialsim setup, so this image no longer prepares the Generic Device Plugin path. Please leave a TODO or issue reference here so the coverage drop is intentional and easy to revert.

Small follow-up
-# Temporarily disable until we can get the correct kernel-devel package
+# TODO(USHIFT-6547 or follow-up): re-enable serialsim once the matching
+# kernel-devel package is available for RHEL 10.2.
+# Until then, keep Generic Device Plugin coverage disabled for this image.
 # COPY --chmod=755 ./bootc-images/build-serialsim.sh /tmp/build-serialsim.sh
 # RUN /tmp/build-serialsim.sh && rm -f /tmp/build-serialsim.sh
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@test/image-blueprints-bootc/el10/layer2-presubmit/group2/rhel102-bootc-source-optionals.containerfile`
around lines 32 - 34, Add an explicit TODO/issue reference above the
commented-out serialsim setup to track this temporary disablement: reference the
removed COPY --chmod=755 ./bootc-images/build-serialsim.sh and RUN
/tmp/build-serialsim.sh lines, note the reason ("waiting for correct
kernel-devel package"), include an issue or ticket ID (or create one) and the
author/date so it’s clear this change is intentional and can be reverted when
resolved; ensure the comment also mentions that this affects the Generic Device
Plugin path so reviewers can see the coverage impact.
test/image-blueprints-bootc/el10/layer4-release/group1/rhel102-bootc-brew-lrel-optional.containerfile (1)

52-55: Acknowledged: Generic device plugin temporarily disabled.

The commented-out build-serialsim.sh steps are documented with a clear reason (kernel-devel package unavailability). Ensure there's tracking to re-enable this when the package becomes available.

Would you like me to open an issue to track re-enabling the generic device plugin once kernel-devel is available?

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@test/image-blueprints-bootc/el10/layer4-release/group1/rhel102-bootc-brew-lrel-optional.containerfile`
around lines 52 - 55, Create a tracking issue in your issue tracker to re-enable
the Generic Device Plugin once kernel-devel is available, then add a single-line
TODO comment in the containerfile referencing that issue (include the issue
number/URL) and the exact change required: uncomment the COPY --chmod=755
./bootc-images/build-serialsim.sh /tmp/build-serialsim.sh and RUN
/tmp/build-serialsim.sh && rm -f /tmp/build-serialsim.sh lines (script name
build-serialsim.sh and the commented COPY/RUN lines) so anyone reading the file
can find the ticket and knows to revert those lines to re-enable the plugin.
test/scenarios-bootc/el10/presubmits/el98-src@el102-src@upgrade-ok.sh (1)

5-8: Missing exit_if_image_not_found guard.

Other similar upgrade scenarios (e.g., el96-prel@el102-src@upgrade-ok.sh) include exit_if_image_not_found checks before using the start image. Consider adding this guard for consistency and clearer failure messages if rhel98-bootc-source is unavailable.

♻️ Suggested addition
+start_image=rhel98-bootc-source
+
 scenario_create_vms() {
+    exit_if_image_not_found "${start_image}"
+
     prepare_kickstart host1 kickstart-bootc.ks.template rhel98-bootc-source
     launch_vm --boot_blueprint rhel98-bootc
 }

Apply similar changes to scenario_remove_vms and scenario_run_tests.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@test/scenarios-bootc/el10/presubmits/el98-src`@el102-src@upgrade-ok.sh around
lines 5 - 8, Add an image-existence guard call using exit_if_image_not_found for
the start image name rhel98-bootc-source before any use in scenario_create_vms;
specifically, call exit_if_image_not_found "rhel98-bootc-source" immediately
before prepare_kickstart/launch_vm in scenario_create_vms. Apply the same
pattern to scenario_remove_vms and scenario_run_tests so each function checks
exit_if_image_not_found "rhel98-bootc-source" before referencing that image.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile`:
- Line 11: The comment contains a typo: it refers to FREEZE_HOOK_PATHNAME but
the actual variable name in the file is FSFREEZE_HOOK_PATHNAME; update the
comment text to read FSFREEZE_HOOK_PATHNAME so it matches the variable used
(referenced symbol: FSFREEZE_HOOK_PATHNAME).

In
`@test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel98-bootc-source-isolated.image-bootc`:
- Line 1: The file rhel98-bootc-source-isolated is incorrectly pointing to
localhost/rhel102-bootc-source-isolated:latest which collapses the intended
9.8→10.2 mapping; update the artifact mapping in rhel98-bootc-source-isolated
(or rename the artifact) so it references the correct 9.8 image (e.g., change
the line to localhost/rhel98-bootc-source-isolated:latest) or rename the file to
rhel102-... to keep the mapping consistent between rhel98-bootc-source-isolated
and rhel102-bootc-source-isolated.

---

Outside diff comments:
In `@test/scenarios-bootc/el10/releases/el102-lrel`@optional.sh:
- Around line 36-46: Add the missing skip for the generic device plugin by
appending "--skip generic-device-plugin" to the skip_args used in the run_tests
invocation: update the skip_args variable (currently set in the block that
defines local skip_args="--skip sriov" and the conditional for aarch64) so it
includes "--skip generic-device-plugin" (e.g., skip_args="--skip sriov --skip
generic-device-plugin") before the run_tests host1 call, ensuring the
shellcheck-disabled expansion ${skip_args} passes the new flag to run_tests.

In `@test/scenarios-bootc/el10/releases/el102-lrel`@standard1.sh:
- Line 33: Update the EXPECTED_OS_VERSION variable to match the rhel102 images:
change the value of EXPECTED_OS_VERSION from "10.0" to "10.2" so it aligns with
the referenced rhel102 assets used by start_image and boot_blueprint; ensure the
--variable "EXPECTED_OS_VERSION:10.2" token is updated wherever set in the
script.

---

Nitpick comments:
In
`@test/image-blueprints-bootc/el10/layer2-presubmit/group2/rhel102-bootc-source-optionals.containerfile`:
- Around line 32-34: Add an explicit TODO/issue reference above the
commented-out serialsim setup to track this temporary disablement: reference the
removed COPY --chmod=755 ./bootc-images/build-serialsim.sh and RUN
/tmp/build-serialsim.sh lines, note the reason ("waiting for correct
kernel-devel package"), include an issue or ticket ID (or create one) and the
author/date so it’s clear this change is intentional and can be reverted when
resolved; ensure the comment also mentions that this affects the Generic Device
Plugin path so reviewers can see the coverage impact.

In
`@test/image-blueprints-bootc/el10/layer4-release/group1/rhel102-bootc-brew-lrel-optional.containerfile`:
- Around line 52-55: Create a tracking issue in your issue tracker to re-enable
the Generic Device Plugin once kernel-devel is available, then add a single-line
TODO comment in the containerfile referencing that issue (include the issue
number/URL) and the exact change required: uncomment the COPY --chmod=755
./bootc-images/build-serialsim.sh /tmp/build-serialsim.sh and RUN
/tmp/build-serialsim.sh && rm -f /tmp/build-serialsim.sh lines (script name
build-serialsim.sh and the commented COPY/RUN lines) so anyone reading the file
can find the ticket and knows to revert those lines to re-enable the plugin.

In `@test/scenarios-bootc/el10/presubmits/el98-src`@el102-src@upgrade-ok.sh:
- Around line 5-8: Add an image-existence guard call using
exit_if_image_not_found for the start image name rhel98-bootc-source before any
use in scenario_create_vms; specifically, call exit_if_image_not_found
"rhel98-bootc-source" immediately before prepare_kickstart/launch_vm in
scenario_create_vms. Apply the same pattern to scenario_remove_vms and
scenario_run_tests so each function checks exit_if_image_not_found
"rhel98-bootc-source" before referencing that image.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: df483060-57a0-4836-a8a6-c4039bd0b74f

📥 Commits

Reviewing files that changed from the base of the PR and between 1c734b2 and 3f36d5b.

📒 Files selected for processing (135)
  • test/bin/ci_phase_iso_build.sh
  • test/image-blueprints-bootc/el10/layer1-base/group1/rhel102-test-agent.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc-crel-isolated.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc-crel-optionals.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc-crel.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc.image-bootc
  • test/image-blueprints-bootc/el10/layer2-presubmit/group1/rhel102-bootc-source.containerfile
  • test/image-blueprints-bootc/el10/layer2-presubmit/group2/rhel102-bootc-source-optionals.containerfile
  • test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel98-bootc-source-isolated.image-bootc
  • test/image-blueprints-bootc/el10/layer4-release/group1/rhel102-bootc-brew-lrel-optional.containerfile
  • test/image-blueprints-bootc/el10/layer4-release/group1/rhel102-bootc-brew.containerfile
  • test/image-blueprints-bootc/el10/layer4-release/group2/rhel102-bootc-brew-lrel-optional.image-bootc
  • test/image-blueprints-bootc/el9/layer1-base/group1/rhel96-test-agent.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group1/rhel98-test-agent.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel96-bootc-prel.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel96-bootc-yminus2.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel96-bootc.image-bootc
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc-crel-isolated.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc-crel-optionals.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc-crel.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc.image-bootc
  • test/image-blueprints-bootc/el9/layer2-presubmit/group1/rhel98-bootc-source-base.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group1/rhel98-bootc-source.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-aux.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-fake-next-minor.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-fips.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-optionals.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group1/rhel98-bootc-source-ai-model-serving.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group1/rhel98-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group2/rhel98-bootc-source-ai-model-serving.image-bootc
  • test/image-blueprints-bootc/el9/layer3-periodic/group2/rhel98-bootc-source-gitops.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group2/rhel98-bootc-source-isolated.image-bootc
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-lrel-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-nightly-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-y1-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-y2-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group2/rhel96-bootc-brew-lrel-fips.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group2/rhel96-bootc-brew-lrel-optional.image-bootc
  • test/image-blueprints-bootc/el9/layer4-release/group2/rhel96-bootc-brew-lrel-tuned.containerfile
  • test/image-blueprints-bootc/layer1-base/group1/rhel100-test-agent.containerfile
  • test/image-blueprints-bootc/layer1-base/group2/rhel100-bootc.image-bootc
  • test/image-blueprints-bootc/templates/ai-model-serving-test-data.sh.template
  • test/image-blueprints-bootc/templates/build-serialsim.sh.template
  • test/image-blueprints-bootc/templates/microshift-copy-images.conf.template
  • test/image-blueprints-bootc/templates/microshift-copy-images.sh.template
  • test/image-blueprints-bootc/templates/microshift-ovsdb-ownership.conf.template
  • test/image-blueprints-bootc/templates/rpm-repo-config.sh.template
  • test/image-blueprints-bootc/upstream/group1/cos10-test-agent.containerfile
  • test/image-blueprints-bootc/upstream/group1/cos9-test-agent.containerfile
  • test/image-blueprints-bootc/upstream/group2/centos10-bootc.image-bootc
  • test/image-blueprints-bootc/upstream/group2/centos9-bootc.image-bootc
  • test/image-blueprints-bootc/upstream/group2/cos10-bootc-source.containerfile
  • test/image-blueprints-bootc/upstream/group2/cos9-bootc-source.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos10-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos10-bootc-source-optionals.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos9-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos9-bootc-source-optionals.containerfile
  • test/package-sources-bootc/rhel102-mirror.repo
  • test/scenarios-bootc/el10/periodics/el102-src@optional.sh
  • test/scenarios-bootc/el10/periodics/el102-src@standard-suite1.sh
  • test/scenarios-bootc/el10/periodics/el102-src@standard-suite2.sh
  • test/scenarios-bootc/el10/periodics/el96-prel@el102-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el10/periodics/el96-yminus2@el102-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el10/periodics/el98-src@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/presubmits/el96-prel@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/presubmits/el96-yminus2@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/presubmits/el98-src@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@ginkgo-tests.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@optional.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@standard1.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@standard2.sh
  • test/scenarios-bootc/el9/periodics/el96-prel@el98-src@upgrade-fails-and-rolls-back.sh
  • test/scenarios-bootc/el9/periodics/el96-prel@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/periodics/el96-prel@el98-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el9/periodics/el96-yminus2@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/periodics/el96-yminus2@el98-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el9/periodics/el98-src@ai-model-serving-offline.sh
  • test/scenarios-bootc/el9/periodics/el98-src@cncf-conformance.sh
  • test/scenarios-bootc/el9/periodics/el98-src@fault-tests-and-greenboot.sh
  • test/scenarios-bootc/el9/periodics/el98-src@fips.sh
  • test/scenarios-bootc/el9/periodics/el98-src@gitops-telemetry-clusterid-systemd.sh
  • test/scenarios-bootc/el9/periodics/el98-src@isolated-net.sh
  • test/scenarios-bootc/el9/periodics/el98-src@offline.sh
  • test/scenarios-bootc/el9/periodics/el98-src@osconfig-cleanup-data.sh
  • test/scenarios-bootc/el9/periodics/el98-src@osconfig-lifecycle.sh
  • test/scenarios-bootc/el9/periodics/el98-src@upgrade-fails-cannot-backup.sh
  • test/scenarios-bootc/el9/presubmits/el96-prel@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el96-yminus2@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el96-yminus2@prel@src@delta-upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el98-base@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el98-base@src@opt@delta-upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@ai-model-serving-online.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@auto-recovery.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@backup-and-restore-on-reboot.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@backups.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@configuration.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@downgrade-block.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@dual-stack.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@ipv6.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@multi-nic.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@optional.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@router.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@standard-suite1.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@standard-suite2.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@storage.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@upgrade-fails-then-recovers.sh.disabled
  • test/scenarios-bootc/el9/presubmits/el98-src@upgrade-fails.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@ai-model-serving-online.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@configuration.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@dual-stack.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@fips.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@ginkgo-tests.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@ipv6.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@iso-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@iso-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@low-latency.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@multi-config-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@multi-config-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@multi-nic.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@nightly-brew-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@nightly-brew-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@optional.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@osconfig-router.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@published-images-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@published-images-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@storage-telemetry.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@tlsv13-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@tlsv13-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-y1@el96-lrel@lvms.sh
  • test/scenarios-bootc/el9/releases/el96-y1@el96-lrel@standard1.sh
  • test/scenarios-bootc/el9/releases/el96-y1@el96-lrel@standard2.sh
  • test/scenarios-bootc/el9/releases/el96-y2@el96-lrel@lvms.sh
  • test/scenarios-bootc/el9/releases/el96-y2@el96-lrel@standard1.sh
  • test/scenarios-bootc/el9/releases/el96-y2@el96-lrel@standard2.sh
💤 Files with no reviewable changes (2)
  • test/image-blueprints-bootc/layer1-base/group2/rhel100-bootc.image-bootc
  • test/image-blueprints-bootc/layer1-base/group1/rhel100-test-agent.containerfile

# Override the default qemu-ga service configuration on the guest to allow all RPCs.
# BLOCK_RPCS is a deny-list of qemu-guest-agent RPCs to block, such as file read/write, process execution, etc. By
# default, all RPCs are blocked.
# FREEZE_HOOK_PATHNAME is the dir-path containing hook scripts. This override does not change the default value.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Minor typo in comment.

Comment says "FREEZE_HOOK_PATHNAME" but the actual variable written on line 18 is "FSFREEZE_HOOK_PATHNAME".

✏️ Suggested fix
-# FREEZE_HOOK_PATHNAME is the dir-path containing hook scripts. This override does not change the default value.
+# FSFREEZE_HOOK_PATHNAME is the dir-path containing hook scripts. This override does not change the default value.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# FREEZE_HOOK_PATHNAME is the dir-path containing hook scripts. This override does not change the default value.
# FSFREEZE_HOOK_PATHNAME is the dir-path containing hook scripts. This override does not change the default value.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile`
at line 11, The comment contains a typo: it refers to FREEZE_HOOK_PATHNAME but
the actual variable name in the file is FSFREEZE_HOOK_PATHNAME; update the
comment text to read FSFREEZE_HOOK_PATHNAME so it matches the variable used
(referenced symbol: FSFREEZE_HOOK_PATHNAME).

@@ -0,0 +1 @@
localhost/rhel102-bootc-source-isolated:latest
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Keep the rhel98 artifact mapped to a 9.8 image.

Line 1 points a rhel98-bootc-source-isolated file at rhel102-bootc-source-isolated. That would collapse the intended 9.8 → 10.2 coverage into 10.2 → 10.2 unless the artifact is renamed to match.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel98-bootc-source-isolated.image-bootc`
at line 1, The file rhel98-bootc-source-isolated is incorrectly pointing to
localhost/rhel102-bootc-source-isolated:latest which collapses the intended
9.8→10.2 mapping; update the artifact mapping in rhel98-bootc-source-isolated
(or rename the artifact) so it references the correct 9.8 image (e.g., change
the line to localhost/rhel98-bootc-source-isolated:latest) or rename the file to
rhel102-... to keep the mapping consistent between rhel98-bootc-source-isolated
and rhel102-bootc-source-isolated.

@openshift-merge-robot openshift-merge-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 9, 2026
@openshift-merge-robot
Copy link
Contributor

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 10, 2026

@vanhalenar: This pull request references USHIFT-6547 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

built on top of this PR bumping release tests to 10.2, should be merged after.

will need rebase after release tests bump to 9.8 is merged, draft for now.

Summary by CodeRabbit

  • New Features

  • Added support for RHEL 10.2 test image configurations and scenarios.

  • Introduced isolated bootc image variant with qemu-guest-agent and microshift capabilities.

  • Tests

  • Updated test scenarios to reference new RHEL 10.2 images.

  • Added new test scenario for RHEL 10.2 upgrade validation.

  • Chores

  • Refactored CI build process to use OS-specific conditional logic for periodic and release image builds.

  • Updated base image references across test containerfiles.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile (1)

11-11: ⚠️ Potential issue | 🟡 Minor

Fix the variable name in the comment.

Line 11 still says FREEZE_HOOK_PATHNAME, but the file writes FSFREEZE_HOOK_PATHNAME on Line 18.

Suggested fix
-# FREEZE_HOOK_PATHNAME is the dir-path containing hook scripts. This override does not change the default value.
+# FSFREEZE_HOOK_PATHNAME is the dir-path containing hook scripts. This override does not change the default value.

Also applies to: 18-18

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile`
at line 11, The comment incorrectly references FREEZE_HOOK_PATHNAME; update the
comment text to use the actual variable name FSFREEZE_HOOK_PATHNAME wherever it
appears (e.g., the comment at line 11 and the other occurrence around line 18)
so the comment matches the variable defined in the containerfile.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile`:
- Around line 22-25: The RUN line that builds the IMAGE_PULL_LIST uses ";" so a
failing jq call won't stop the build; change the command chaining to use "&&"
(or set "-e" / add "|| exit 1") so that the jq invocation that populates the
images variable must succeed before appending "quay.io/microshift/busybox:1.36"
and calling IMAGE_PULL_LIST=... /usr/bin/microshift-copy-images pull;
specifically update the RUN invocation that uses jq -r ".images[]"
/usr/share/microshift/release/release-"$(uname -m)".json, the images="${images}
quay.io/microshift/busybox:1.36" assignment, and the IMAGE_PULL_LIST ...
/usr/bin/microshift-copy-images pull invocation to be chained with && (or fail
immediately) instead of ";" so the build fails when the release JSON lookup
fails.

---

Duplicate comments:
In
`@test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile`:
- Line 11: The comment incorrectly references FREEZE_HOOK_PATHNAME; update the
comment text to use the actual variable name FSFREEZE_HOOK_PATHNAME wherever it
appears (e.g., the comment at line 11 and the other occurrence around line 18)
so the comment matches the variable defined in the containerfile.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Pro

Run ID: 11e2924f-1ece-4e90-8e31-7ed8815da7e4

📥 Commits

Reviewing files that changed from the base of the PR and between 3f36d5b and 447b84e.

📒 Files selected for processing (132)
  • test/bin/ci_phase_iso_build.sh
  • test/image-blueprints-bootc/el10/layer1-base/group1/rhel102-test-agent.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc-crel-isolated.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc-crel-optionals.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc-crel.containerfile
  • test/image-blueprints-bootc/el10/layer1-base/group2/rhel102-bootc.image-bootc
  • test/image-blueprints-bootc/el10/layer2-presubmit/group1/rhel102-bootc-source.containerfile
  • test/image-blueprints-bootc/el10/layer2-presubmit/group2/rhel102-bootc-source-optionals.containerfile
  • test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel98-bootc-source-isolated.image-bootc
  • test/image-blueprints-bootc/el10/layer4-release/group1/rhel102-bootc-brew-lrel-optional.containerfile
  • test/image-blueprints-bootc/el10/layer4-release/group1/rhel102-bootc-brew.containerfile
  • test/image-blueprints-bootc/el10/layer4-release/group2/rhel102-bootc-brew-lrel-optional.image-bootc
  • test/image-blueprints-bootc/el9/layer1-base/group1/rhel96-test-agent.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group1/rhel98-test-agent.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel96-bootc-prel.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel96-bootc-yminus2.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel96-bootc.image-bootc
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc-crel-isolated.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc-crel-optionals.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc-crel.containerfile
  • test/image-blueprints-bootc/el9/layer1-base/group2/rhel98-bootc.image-bootc
  • test/image-blueprints-bootc/el9/layer2-presubmit/group1/rhel98-bootc-source-base.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group1/rhel98-bootc-source.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-aux.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-fake-next-minor.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-fips.containerfile
  • test/image-blueprints-bootc/el9/layer2-presubmit/group2/rhel98-bootc-source-optionals.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group1/rhel98-bootc-source-ai-model-serving.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group1/rhel98-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group2/rhel98-bootc-source-ai-model-serving.image-bootc
  • test/image-blueprints-bootc/el9/layer3-periodic/group2/rhel98-bootc-source-gitops.containerfile
  • test/image-blueprints-bootc/el9/layer3-periodic/group2/rhel98-bootc-source-isolated.image-bootc
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-lrel-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-nightly-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-y1-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group1/rhel96-bootc-brew-y2-with-optional.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group2/rhel96-bootc-brew-lrel-fips.containerfile
  • test/image-blueprints-bootc/el9/layer4-release/group2/rhel96-bootc-brew-lrel-optional.image-bootc
  • test/image-blueprints-bootc/el9/layer4-release/group2/rhel96-bootc-brew-lrel-tuned.containerfile
  • test/image-blueprints-bootc/templates/ai-model-serving-test-data.sh.template
  • test/image-blueprints-bootc/templates/build-serialsim.sh.template
  • test/image-blueprints-bootc/templates/microshift-copy-images.conf.template
  • test/image-blueprints-bootc/templates/microshift-copy-images.sh.template
  • test/image-blueprints-bootc/templates/microshift-ovsdb-ownership.conf.template
  • test/image-blueprints-bootc/templates/rpm-repo-config.sh.template
  • test/image-blueprints-bootc/upstream/group1/cos10-test-agent.containerfile
  • test/image-blueprints-bootc/upstream/group1/cos9-test-agent.containerfile
  • test/image-blueprints-bootc/upstream/group2/centos10-bootc.image-bootc
  • test/image-blueprints-bootc/upstream/group2/centos9-bootc.image-bootc
  • test/image-blueprints-bootc/upstream/group2/cos10-bootc-source.containerfile
  • test/image-blueprints-bootc/upstream/group2/cos9-bootc-source.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos10-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos10-bootc-source-optionals.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos9-bootc-source-isolated.containerfile
  • test/image-blueprints-bootc/upstream/group3/cos9-bootc-source-optionals.containerfile
  • test/scenarios-bootc/el10/periodics/el102-src@optional.sh
  • test/scenarios-bootc/el10/periodics/el102-src@standard-suite1.sh
  • test/scenarios-bootc/el10/periodics/el102-src@standard-suite2.sh
  • test/scenarios-bootc/el10/periodics/el96-prel@el102-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el10/periodics/el96-yminus2@el102-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el10/periodics/el98-src@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/presubmits/el96-prel@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/presubmits/el96-yminus2@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/presubmits/el98-src@el102-src@upgrade-ok.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@ginkgo-tests.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@optional.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@standard1.sh
  • test/scenarios-bootc/el10/releases/el102-lrel@standard2.sh
  • test/scenarios-bootc/el9/periodics/el96-prel@el98-src@upgrade-fails-and-rolls-back.sh
  • test/scenarios-bootc/el9/periodics/el96-prel@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/periodics/el96-prel@el98-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el9/periodics/el96-yminus2@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/periodics/el96-yminus2@el98-src@upgrade-ostree2bootc-ok.sh
  • test/scenarios-bootc/el9/periodics/el98-src@ai-model-serving-offline.sh
  • test/scenarios-bootc/el9/periodics/el98-src@cncf-conformance.sh
  • test/scenarios-bootc/el9/periodics/el98-src@fault-tests-and-greenboot.sh
  • test/scenarios-bootc/el9/periodics/el98-src@fips.sh
  • test/scenarios-bootc/el9/periodics/el98-src@gitops-telemetry-clusterid-systemd.sh
  • test/scenarios-bootc/el9/periodics/el98-src@isolated-net.sh
  • test/scenarios-bootc/el9/periodics/el98-src@offline.sh
  • test/scenarios-bootc/el9/periodics/el98-src@osconfig-cleanup-data.sh
  • test/scenarios-bootc/el9/periodics/el98-src@osconfig-lifecycle.sh
  • test/scenarios-bootc/el9/periodics/el98-src@upgrade-fails-cannot-backup.sh
  • test/scenarios-bootc/el9/presubmits/el96-prel@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el96-yminus2@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el96-yminus2@prel@src@delta-upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el98-base@el98-src@upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el98-base@src@opt@delta-upgrade-ok.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@ai-model-serving-online.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@auto-recovery.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@backup-and-restore-on-reboot.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@backups.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@configuration.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@downgrade-block.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@dual-stack.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@ipv6.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@multi-nic.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@optional.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@router.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@standard-suite1.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@standard-suite2.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@storage.sh
  • test/scenarios-bootc/el9/presubmits/el98-src@upgrade-fails-then-recovers.sh.disabled
  • test/scenarios-bootc/el9/presubmits/el98-src@upgrade-fails.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@ai-model-serving-online.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@configuration.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@dual-stack.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@fips.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@ginkgo-tests.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@ipv6.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@iso-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@iso-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@low-latency.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@multi-config-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@multi-config-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@multi-nic.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@nightly-brew-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@nightly-brew-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@optional.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@osconfig-router.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@published-images-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@published-images-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@storage-telemetry.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@tlsv13-standard1.sh
  • test/scenarios-bootc/el9/releases/el96-lrel@tlsv13-standard2.sh
  • test/scenarios-bootc/el9/releases/el96-y1@el96-lrel@lvms.sh
  • test/scenarios-bootc/el9/releases/el96-y1@el96-lrel@standard1.sh
  • test/scenarios-bootc/el9/releases/el96-y1@el96-lrel@standard2.sh
  • test/scenarios-bootc/el9/releases/el96-y2@el96-lrel@lvms.sh
  • test/scenarios-bootc/el9/releases/el96-y2@el96-lrel@standard1.sh
  • test/scenarios-bootc/el9/releases/el96-y2@el96-lrel@standard2.sh
✅ Files skipped from review due to trivial changes (1)
  • test/image-blueprints-bootc/el10/layer3-periodic/group2/rhel98-bootc-source-isolated.image-bootc
🚧 Files skipped from review as they are similar to previous changes (4)

Comment on lines +22 to +25
RUN --mount=type=secret,id=pullsecret,dst=/run/secrets/pull-secret.json \
images="$(jq -r ".images[]" /usr/share/microshift/release/release-"$(uname -m)".json)" ; \
images="${images} quay.io/microshift/busybox:1.36" ; \
IMAGE_PULL_LIST="${images}" /usr/bin/microshift-copy-images pull
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
/bin/sh -c 'images=$(false); printf "assignment_status=%s\n" "$?"; images="${images} quay.io/microshift/busybox:1.36"; printf "continued=%s\n" "$images"; true'

Repository: openshift/microshift

Length of output: 126


Use && instead of ; to fail the build if the release JSON lookup breaks.

With ;, a failed jq command does not stop the shell; the build continues with only busybox, producing a broken "isolated" image while appearing successful.

Suggested fix
 RUN --mount=type=secret,id=pullsecret,dst=/run/secrets/pull-secret.json \
-    images="$(jq -r ".images[]" /usr/share/microshift/release/release-"$(uname -m)".json)" ; \
-    images="${images} quay.io/microshift/busybox:1.36" ; \
+    images="$(jq -r '.images[]' "/usr/share/microshift/release/release-$(uname -m).json")" && \
+    images="${images} quay.io/microshift/busybox:1.36" && \
     IMAGE_PULL_LIST="${images}" /usr/bin/microshift-copy-images pull
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
RUN --mount=type=secret,id=pullsecret,dst=/run/secrets/pull-secret.json \
images="$(jq -r ".images[]" /usr/share/microshift/release/release-"$(uname -m)".json)" ; \
images="${images} quay.io/microshift/busybox:1.36" ; \
IMAGE_PULL_LIST="${images}" /usr/bin/microshift-copy-images pull
RUN --mount=type=secret,id=pullsecret,dst=/run/secrets/pull-secret.json \
images="$(jq -r '.images[]' "/usr/share/microshift/release/release-$(uname -m).json")" && \
images="${images} quay.io/microshift/busybox:1.36" && \
IMAGE_PULL_LIST="${images}" /usr/bin/microshift-copy-images pull
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@test/image-blueprints-bootc/el10/layer3-periodic/group1/rhel102-bootc-source-isolated.containerfile`
around lines 22 - 25, The RUN line that builds the IMAGE_PULL_LIST uses ";" so a
failing jq call won't stop the build; change the command chaining to use "&&"
(or set "-e" / add "|| exit 1") so that the jq invocation that populates the
images variable must succeed before appending "quay.io/microshift/busybox:1.36"
and calling IMAGE_PULL_LIST=... /usr/bin/microshift-copy-images pull;
specifically update the RUN invocation that uses jq -r ".images[]"
/usr/share/microshift/release/release-"$(uname -m)".json, the images="${images}
quay.io/microshift/busybox:1.36" assignment, and the IMAGE_PULL_LIST ...
/usr/bin/microshift-copy-images pull invocation to be chained with && (or fail
immediately) instead of ";" so the build fails when the release JSON lookup
fails.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Mar 10, 2026

@vanhalenar: This pull request references USHIFT-6547 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

built on top of this PR bumping release tests to 10.2, should be merged after.

will need rebase after release tests bump to 9.8 is merged, draft for now.

Summary by CodeRabbit

  • New Features

  • Added new test scenarios and build support for RHEL 10.2 bootc image variants.

  • Restructured build orchestration with OS-specific conditional handling for different release stages.

  • Bug Fixes

  • Disabled incompatible serial simulator builds in release candidates to address kernel-devel dependency issues.

  • Tests

  • Updated test infrastructure to use RHEL 10.2 images across periodic and release test suites.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@vanhalenar vanhalenar closed this Mar 10, 2026
@vanhalenar vanhalenar deleted the dual-lane branch March 10, 2026 11:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants