Skip to content

USHIFT-7412: Add RPM presubmit scenarios - #7175

Draft
agullon wants to merge 6 commits into
openshift:mainfrom
agullon:USHIFT-7412
Draft

USHIFT-7412: Add RPM presubmit scenarios#7175
agullon wants to merge 6 commits into
openshift:mainfrom
agullon:USHIFT-7412

Conversation

@agullon

@agullon agullon commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add scenarios-rpm type to the CI framework (common.sh)
  • Add RPM build path to ci_phase_iso_build.sh — downloads installer ISOs from S3 build cache and builds RPMs from source, skipping composer and image builds entirely
  • Skip composer cleanup and mirror registry for RPM scenarios in ci_phase_boot_and_test.sh
  • Add 4 presubmit scenarios in test/scenarios-rpm/presubmits/:
    • el98-src@standard1.sh, el98-src@standard2.sh
    • el102-src@standard1.sh, el102-src@standard2.sh

Each scenario boots a bare RHEL VM from a cached installer ISO, installs MicroShift via dnf install from source-built RPMs, runs a standard test suite, and removes MicroShift.

Companion PR

  • openshift/release: TBD (adds e2e-aws-tests-rpm Prow job)

Test plan

  • /test e2e-aws-tests-rpm on this PR (after release PR merges)
  • Verify RPM build path downloads ISOs from S3 cache
  • Verify scenarios boot VMs and run standard tests successfully

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Tests
    • Added RPM installation presubmit coverage for RHEL 9.8 and 10.2.
    • Added validation for package installation and removal, repository configuration, registration, and subscription workflows.
    • Added separate scenarios for standard and expanded test suites.
    • Updated RPM build and installer testing workflows, including ISO retrieval and scenario-specific setup.
    • Improved handling of RPM test jobs, caching, and mirror configuration.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Aug 11, 2026
@openshift-ci-robot

openshift-ci-robot commented Aug 11, 2026

Copy link
Copy Markdown

@agullon: This pull request references USHIFT-7412 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 epic to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

  • Add scenarios-rpm type to the CI framework (common.sh)
  • Add RPM build path to ci_phase_iso_build.sh — downloads installer ISOs from S3 build cache and builds RPMs from source, skipping composer and image builds entirely
  • Skip composer cleanup and mirror registry for RPM scenarios in ci_phase_boot_and_test.sh
  • Add 4 presubmit scenarios in test/scenarios-rpm/presubmits/:
  • el98-src@standard1.sh, el98-src@standard2.sh
  • el102-src@standard1.sh, el102-src@standard2.sh

Each scenario boots a bare RHEL VM from a cached installer ISO, installs MicroShift via dnf install from source-built RPMs, runs a standard test suite, and removes MicroShift.

Companion PR

  • openshift/release: TBD (adds e2e-aws-tests-rpm Prow job)

Test plan

  • /test e2e-aws-tests-rpm on this PR (after release PR merges)
  • Verify RPM build path downloads ISOs from S3 cache
  • Verify scenarios boot VMs and run standard tests successfully

🤖 Generated with Claude Code

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 openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 11, 2026
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

RPM scenarios are detected by path and routed through dedicated CI build logic. RPM jobs download RHEL 9.8 and 10.2 installer ISOs, build packages, and run four new presubmit scenarios.

Changes

RPM CI workflow

Layer / File(s) Summary
Scenario detection and boot-test routing
test/bin/common.sh, test/bin/ci_phase_boot_and_test.sh
RPM paths set SCENARIO_TYPE=rpm. RPM jobs skip Composer cache cleanup and mirror registry setup.
RPM ISO and package build flow
test/bin/ci_phase_iso_build.sh
RPM jobs start nginx, download RHEL 9.8 and 10.2 installer ISOs from S3, and run build_rpms.sh. Non-RPM jobs retain cache and image-build processing.
RHEL RPM presubmit scenarios
test/scenarios-rpm/presubmits/*
Four scenarios add VM lifecycle management, repository and release configuration, and ordered RPM test execution for RHEL 9.8 and 10.2.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Scenario
  participant CI
  participant S3
  participant RPMBuilder
  participant InstallerVM
  Scenario->>CI: select RPM presubmit
  CI->>S3: download RHEL installer ISOs
  CI->>RPMBuilder: build RPMs
  CI->>InstallerVM: create and configure VM
  InstallerVM->>InstallerVM: run ordered RPM tests
  CI->>InstallerVM: remove VM
Loading

Suggested reviewers: eslutsky, pacevedom


Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error The new RPM path runs manage_webserver.sh with bash -x; its auth_pass and base64 auth_cred assignments are then written to CI logs by xtrace. Run manage_webserver.sh without xtrace, or disable xtrace around setup_ocp_mirror_proxy and redact credential-bearing assignments.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (13 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: adding RPM presubmit scenarios.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed The cumulative PR diff adds shell orchestration and Robot suite paths only; it adds no Ginkgo APIs or test titles, dynamic or otherwise.
Test Structure And Quality ✅ Passed Not applicable: all PR-listed test changes are Bash orchestration scripts that delegate to Robot Framework .robot suites; no Ginkgo It/BeforeEach/AfterEach/Eventually code is present.
Microshift Test Compatibility ✅ Passed The PR adds only shell CI/scenario scripts and invokes existing Robot suites; it adds no Ginkgo e2e tests, so MicroShift API compatibility checks are not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The PR adds Bash CI/scenario files that invoke Robot Framework suites (suites/*.robot); no new Ginkgo constructs (It, Describe, Context, or When) are present, so this check is not applica...
Topology-Aware Scheduling Compatibility ✅ Passed The PR changes only shell-based CI scripts and RPM test scenarios; no deployment manifests, operator code, controllers, or topology-dependent scheduling constraints were added or modified.
Ote Binary Stdout Contract ✅ Passed The PR changes only shell scripts; RPM scenarios call Robot run_tests, and no changed Go code contains main/TestMain/RunSpecs or process-level stdout logging.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The feature diff adds only .sh CI/scenario files; the four new scenarios invoke Robot suites and contain no Ginkgo It/Describe/Context/When tests, so this check is not applicable.
No-Weak-Crypto ✅ Passed The seven changed shell files add no MD5, SHA1, DES, RC4, Blowfish, ECB, custom crypto, or secret/token comparisons.
Container-Privileges ✅ Passed The PR adds no privileged container or Kubernetes settings; changed lines contain no privileged, hostPID/Network/IPC, SYS_ADMIN, or allowPrivilegeEscalation controls.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci
openshift-ci Bot requested review from eslutsky and pacevedom August 11, 2026 09:00
@openshift-ci

openshift-ci Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: agullon

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

The pull request process is described 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

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 11, 2026
@openshift-ci

openshift-ci Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

@agullon: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-aws-tests-bootc-el9 ca06df5 link true /test e2e-aws-tests-bootc-el9
ci/prow/e2e-aws-tests-cache ca06df5 link true /test e2e-aws-tests-cache
ci/prow/images ca06df5 link false /test images
ci/prow/e2e-aws-tests-arm ca06df5 link true /test e2e-aws-tests-arm
ci/prow/e2e-aws-tests-bootc-release-el9 ca06df5 link true /test e2e-aws-tests-bootc-release-el9
ci/prow/test-rebase ca06df5 link false /test test-rebase
ci/prow/ocp-full-conformance-rhel-eus ca06df5 link true /test ocp-full-conformance-rhel-eus
ci/prow/e2e-aws-tests-release ca06df5 link true /test e2e-aws-tests-release
ci/prow/verify-deps ca06df5 link true /test verify-deps
ci/prow/e2e-aws-tests ca06df5 link true /test e2e-aws-tests
ci/prow/e2e-aws-tests-bootc-periodic-arm-el10 ca06df5 link true /test e2e-aws-tests-bootc-periodic-arm-el10
ci/prow/security ca06df5 link false /test security
ci/prow/e2e-aws-tests-bootc-release-el10 ca06df5 link true /test e2e-aws-tests-bootc-release-el10
ci/prow/e2e-aws-tests-bootc-release-arm-el9 ca06df5 link true /test e2e-aws-tests-bootc-release-arm-el9
ci/prow/e2e-aws-ai-model-serving ca06df5 link true /test e2e-aws-ai-model-serving
ci/prow/e2e-aws-tests-bootc-upstream ca06df5 link true /test e2e-aws-tests-bootc-upstream
ci/prow/verify ca06df5 link true /test verify
ci/prow/e2e-aws-tests-bootc-periodic-arm-el9 ca06df5 link true /test e2e-aws-tests-bootc-periodic-arm-el9
ci/prow/e2e-aws-tests-bootc-upstream-arm ca06df5 link true /test e2e-aws-tests-bootc-upstream-arm
ci/prow/e2e-aws-tests-periodic-arm ca06df5 link true /test e2e-aws-tests-periodic-arm
ci/prow/e2e-aws-tests-bootc-release-arm-el10 ca06df5 link true /test e2e-aws-tests-bootc-release-arm-el10
ci/prow/e2e-aws-tests-bootc-el10 ca06df5 link true /test e2e-aws-tests-bootc-el10
ci/prow/e2e-aws-tests-cache-arm ca06df5 link true /test e2e-aws-tests-cache-arm
ci/prow/e2e-aws-tests-bootc-arm-el9 ca06df5 link true /test e2e-aws-tests-bootc-arm-el9
ci/prow/e2e-aws-tests-release-arm ca06df5 link true /test e2e-aws-tests-release-arm
ci/prow/e2e-aws-tests-bootc-arm-el10 ca06df5 link true /test e2e-aws-tests-bootc-arm-el10
ci/prow/e2e-aws-tests-bootc-periodic-el9 ca06df5 link true /test e2e-aws-tests-bootc-periodic-el9
ci/prow/test-unit ca06df5 link true /test test-unit
ci/prow/test-rpm ca06df5 link true /test test-rpm
ci/prow/e2e-aws-tests-bootc-periodic-el10 ca06df5 link true /test e2e-aws-tests-bootc-periodic-el10
ci/prow/ocp-full-conformance-serial-rhel-eus ca06df5 link true /test ocp-full-conformance-serial-rhel-eus
ci/prow/e2e-aws-tests-periodic ca06df5 link true /test e2e-aws-tests-periodic
ci/prow/e2e-aws-tests-bootc-c2cc-arm ca06df5 link true /test e2e-aws-tests-bootc-c2cc-arm
ci/prow/e2e-aws-tests-bootc-c2cc ca06df5 link true /test e2e-aws-tests-bootc-c2cc

Full PR test history. Your PR dashboard.

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. I understand the commands that are listed here.

@agullon
agullon marked this pull request as draft August 11, 2026 09:17
@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 Aug 11, 2026
Add support for RPM-based presubmit CI that skips the image build phase
entirely. Instead of building ostree/bootc images, the RPM build path
downloads bare RHEL installer ISOs from the S3 build cache and installs
MicroShift via dnf from source-built RPMs.

Changes:
- Add scenarios-rpm type to get_scenario_type_from_path()
- Add RPM_BUILDS mode to ci_phase_iso_build.sh that downloads ISOs from
  S3 and builds RPMs without composer or image builds
- Skip composer cleanup and mirror registry for RPM scenarios in
  ci_phase_boot_and_test.sh
- Add 4 presubmit scenarios: el{98,102}-src@standard{1,2}.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 11, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/scenarios-rpm/presubmits/el102-src`@standard1.sh:
- Line 32: Update configure_fast_datapath_repo usage in
test/scenarios-rpm/presubmits/el102-src@standard1.sh lines 32-32 and
test/scenarios-rpm/presubmits/el102-src@standard2.sh lines 32-32 to use a RHEL
10-compatible Fast Datapath configuration, or skip the repository when
unsupported; do not allow the helper’s non-9 branch to configure the RHEL 9 CDN
path.
- Around line 1-3: Update the shell initialization in
test/scenarios-rpm/presubmits/el102-src@standard1.sh lines 1-3,
test/scenarios-rpm/presubmits/el102-src@standard2.sh lines 1-3,
test/scenarios-rpm/presubmits/el98-src@standard1.sh lines 1-3, and
test/scenarios-rpm/presubmits/el98-src@standard2.sh lines 1-3: use the
/usr/bin/bash shebang and add set -euo pipefail immediately afterward in each
scenario script.
- Around line 23-25: In test/scenarios-rpm/presubmits/el102-src@standard1.sh
lines 23-25, declare source_reponame and target_version separately from their
command substitutions so failures from basename and local_rpm_version propagate;
preserve source_repo_url and existing readonly behavior. Apply the same change
to test/scenarios-rpm/presubmits/el102-src@standard2.sh lines 23-25,
test/scenarios-rpm/presubmits/el98-src@standard1.sh lines 23-25, and
test/scenarios-rpm/presubmits/el98-src@standard2.sh lines 23-25, ensuring all
scripts pass shellcheck.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: a2ccf907-00bf-4b73-acb9-ab429a4b1295

📥 Commits

Reviewing files that changed from the base of the PR and between 18568ca and 323860f.

📒 Files selected for processing (7)
  • test/bin/ci_phase_boot_and_test.sh
  • test/bin/ci_phase_iso_build.sh
  • test/bin/common.sh
  • test/scenarios-rpm/presubmits/el102-src@standard1.sh
  • test/scenarios-rpm/presubmits/el102-src@standard2.sh
  • test/scenarios-rpm/presubmits/el98-src@standard1.sh
  • test/scenarios-rpm/presubmits/el98-src@standard2.sh

Comment on lines +1 to +3
#!/bin/bash

# Sourced from scenario.sh and uses functions defined there.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use the required shell initialization in every scenario.

  • test/scenarios-rpm/presubmits/el102-src@standard1.sh#L1-L3: use #!/usr/bin/bash and add set -euo pipefail.
  • test/scenarios-rpm/presubmits/el102-src@standard2.sh#L1-L3: use #!/usr/bin/bash and add set -euo pipefail.
  • test/scenarios-rpm/presubmits/el98-src@standard1.sh#L1-L3: use #!/usr/bin/bash and add set -euo pipefail.
  • test/scenarios-rpm/presubmits/el98-src@standard2.sh#L1-L3: use #!/usr/bin/bash and add set -euo pipefail.
Proposed fix
-#!/bin/bash
+#!/usr/bin/bash
+
+set -euo pipefail

As per coding guidelines, Shell scripts must use the #!/usr/bin/bash shebang and set -euo pipefail.

📝 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
#!/bin/bash
# Sourced from scenario.sh and uses functions defined there.
#!/usr/bin/bash
set -euo pipefail
# Sourced from scenario.sh and uses functions defined there.
📍 Affects 4 files
  • test/scenarios-rpm/presubmits/el102-src@standard1.sh#L1-L3 (this comment)
  • test/scenarios-rpm/presubmits/el102-src@standard2.sh#L1-L3
  • test/scenarios-rpm/presubmits/el98-src@standard1.sh#L1-L3
  • test/scenarios-rpm/presubmits/el98-src@standard2.sh#L1-L3
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/scenarios-rpm/presubmits/el102-src`@standard1.sh around lines 1 - 3,
Update the shell initialization in
test/scenarios-rpm/presubmits/el102-src@standard1.sh lines 1-3,
test/scenarios-rpm/presubmits/el102-src@standard2.sh lines 1-3,
test/scenarios-rpm/presubmits/el98-src@standard1.sh lines 1-3, and
test/scenarios-rpm/presubmits/el98-src@standard2.sh lines 1-3: use the
/usr/bin/bash shebang and add set -euo pipefail immediately afterward in each
scenario script.

Source: Coding guidelines

Comment on lines +23 to +25
local -r source_reponame=$(basename "${LOCAL_REPO}")
local -r source_repo_url="${WEB_SERVER_URL}/rpm-repos/${source_reponame}"
local -r target_version=$(local_rpm_version)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not mask command failures with local.

local -r name=$(command) masks the command exit status. A failed RPM version lookup can continue with an empty TARGET_VERSION.

  • test/scenarios-rpm/presubmits/el102-src@standard1.sh#L23-L25: declare and assign source_reponame and target_version separately.
  • test/scenarios-rpm/presubmits/el102-src@standard2.sh#L23-L25: declare and assign source_reponame and target_version separately.
  • test/scenarios-rpm/presubmits/el98-src@standard1.sh#L23-L25: declare and assign source_reponame and target_version separately.
  • test/scenarios-rpm/presubmits/el98-src@standard2.sh#L23-L25: declare and assign source_reponame and target_version separately.
Proposed fix
-    local -r source_reponame=$(basename "${LOCAL_REPO}")
+    local source_reponame
+    source_reponame="$(basename -- "${LOCAL_REPO}")"
+    readonly source_reponame
     local -r source_repo_url="${WEB_SERVER_URL}/rpm-repos/${source_reponame}"
-    local -r target_version=$(local_rpm_version)
+    local target_version
+    target_version="$(local_rpm_version)"
+    readonly target_version

As per coding guidelines, Shell scripts must pass shellcheck.

📝 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
local -r source_reponame=$(basename "${LOCAL_REPO}")
local -r source_repo_url="${WEB_SERVER_URL}/rpm-repos/${source_reponame}"
local -r target_version=$(local_rpm_version)
local source_reponame
source_reponame="$(basename -- "${LOCAL_REPO}")"
readonly source_reponame
local -r source_repo_url="${WEB_SERVER_URL}/rpm-repos/${source_reponame}"
local target_version
target_version="$(local_rpm_version)"
readonly target_version
📍 Affects 4 files
  • test/scenarios-rpm/presubmits/el102-src@standard1.sh#L23-L25 (this comment)
  • test/scenarios-rpm/presubmits/el102-src@standard2.sh#L23-L25
  • test/scenarios-rpm/presubmits/el98-src@standard1.sh#L23-L25
  • test/scenarios-rpm/presubmits/el98-src@standard2.sh#L23-L25
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/scenarios-rpm/presubmits/el102-src`@standard1.sh around lines 23 - 25,
In test/scenarios-rpm/presubmits/el102-src@standard1.sh lines 23-25, declare
source_reponame and target_version separately from their command substitutions
so failures from basename and local_rpm_version propagate; preserve
source_repo_url and existing readonly behavior. Apply the same change to
test/scenarios-rpm/presubmits/el102-src@standard2.sh lines 23-25,
test/scenarios-rpm/presubmits/el98-src@standard1.sh lines 23-25, and
test/scenarios-rpm/presubmits/el98-src@standard2.sh lines 23-25, ensuring all
scripts pass shellcheck.

Source: Coding guidelines

configure_rhocp_repo "${RHOCP_MINOR_Y1}" 4 "${PREVIOUS_MINOR_VERSION}"
configure_rhocp_repo "${RHOCP_MINOR_Y1_BETA}" 4 "${PREVIOUS_MINOR_VERSION}"
run_command_on_vm host1 "sudo subscription-manager release --set 10.2"
configure_fast_datapath_repo

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Configure a RHEL 10 Fast Datapath repository.

On RHEL 10, configure_fast_datapath_repo takes its non-9 branch. That branch configures a RHEL 9 CDN path. Update the helper for RHEL 10, or skip this repository when it is unsupported.

  • test/scenarios-rpm/presubmits/el102-src@standard1.sh#L32-L32: use a RHEL 10-compatible Fast Datapath configuration.
  • test/scenarios-rpm/presubmits/el102-src@standard2.sh#L32-L32: use a RHEL 10-compatible Fast Datapath configuration.
📍 Affects 2 files
  • test/scenarios-rpm/presubmits/el102-src@standard1.sh#L32-L32 (this comment)
  • test/scenarios-rpm/presubmits/el102-src@standard2.sh#L32-L32
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/scenarios-rpm/presubmits/el102-src`@standard1.sh at line 32, Update
configure_fast_datapath_repo usage in
test/scenarios-rpm/presubmits/el102-src@standard1.sh lines 32-32 and
test/scenarios-rpm/presubmits/el102-src@standard2.sh lines 32-32 to use a RHEL
10-compatible Fast Datapath configuration, or skip the repository when
unsupported; do not allow the helper’s non-9 branch to configure the RHEL 9 CDN
path.

The RPM build path skips manage_composer_config.sh which normally
installs nginx as a dependency. Install it explicitly before starting
the web server.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
The CI environment uses a custom AWS CLI binary downloaded by
fetch_tools.sh, not the system aws command. Use ${AWSCLI} and
ensure it's downloaded before the S3 copy operations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
The RPM path skips configure-composer.sh which installs podman (needed
by make rpm-podman) and parallel (needed by build_rpms.sh). Install
them explicitly alongside nginx.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
…ent)

parallel comes from EPEL, not base RHEL repos. Install EPEL first.
podman is already installed on the EC2 instance.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@test/bin/ci_phase_iso_build.sh`:
- Line 215: Remove the unconditional “|| true” from the EPEL installation
command in the CI setup flow so failures stop the build. If idempotency is
required, explicitly handle only the already-installed case while propagating
all other installation errors before the subsequent parallel dependency setup.
- Line 215: Update test/bin/ci_phase_iso_build.sh to use the required
#!/usr/bin/bash shebang and quote the %{rhel} RPM macro in the dnf installation
command as rpm -E '%{rhel}'. Validate the script with shellcheck
--external-sources.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 553ec018-f114-4a11-8ca2-8fdf9b92deb7

📥 Commits

Reviewing files that changed from the base of the PR and between fb45a24 and 190d711.

📒 Files selected for processing (1)
  • test/bin/ci_phase_iso_build.sh


# RPM builds skip composer entirely — install required packages and start the web server.
if ${RPM_BUILDS} ; then
$(dry_run) sudo dnf install -y "https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %{rhel}).noarch.rpm" || true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Do not suppress EPEL installation failures.

|| true allows the required EPEL setup to fail silently. If the repository installation fails, Line 216 may fail later because parallel depends on EPEL. Remove || true, or handle only the already-installed case explicitly.

🧰 Tools
🪛 Shellcheck (0.11.0)

[warning] 215-215: This { is literal. Check expression (missing ;/\n?) or quote it.

(SC1083)


[warning] 215-215: This } is literal. Check expression (missing ;/\n?) or quote it.

(SC1083)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/bin/ci_phase_iso_build.sh` at line 215, Remove the unconditional “||
true” from the EPEL installation command in the CI setup flow so failures stop
the build. If idempotency is required, explicitly handle only the
already-installed case while propagating all other installation errors before
the subsequent parallel dependency setup.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail
shellcheck test/bin/ci_phase_iso_build.sh

Repository: openshift/microshift

Length of output: 1114


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- file header ---'
sed -n '1,35p' test/bin/ci_phase_iso_build.sh

printf '%s\n' '--- target and nearby commands ---'
sed -n '205,232p' test/bin/ci_phase_iso_build.sh

printf '%s\n' '--- shellcheck target diagnostics ---'
shellcheck test/bin/ci_phase_iso_build.sh || true

Repository: openshift/microshift

Length of output: 3437


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- EPEL and RPM build references ---'
rg -n -C 3 'epel|RPM_BUILDS|ci_phase_iso_build|dnf install.*nginx|dnf install.*parallel' \
  --glob '!_output/**' .

printf '%s\n' '--- ShellCheck on an in-memory quoted variant ---'
python3 - <<'PY'
from pathlib import Path
import subprocess

path = Path("test/bin/ci_phase_iso_build.sh")
source = path.read_text()
old = "rpm -E %{rhel}"
new = "rpm -E '%{rhel}'"
if old not in source:
    raise SystemExit("target text not found")
result = subprocess.run(
    ["shellcheck", "-s", "bash", "-"],
    input=source.replace(old, new),
    text=True,
    capture_output=True,
)
print(result.stdout, end="")
print(result.stderr, end="")
print(f"shellcheck_exit={result.returncode}")
PY

Repository: openshift/microshift

Length of output: 11518


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- dry_run definition and call sites ---'
rg -n -C 8 'dry_run[[:space:]]*\(|function[[:space:]]+dry_run|dry_run=' test/bin/ci_phase_iso_build.sh test/bin

printf '%s\n' '--- source directive and common.sh header ---'
sed -n '220,230p' test/bin/ci_phase_iso_build.sh
sed -n '1,45p' test/bin/common.sh

printf '%s\n' '--- ShellCheck with external sources enabled ---'
shellcheck -x test/bin/ci_phase_iso_build.sh || true

Repository: openshift/microshift

Length of output: 11787


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- dry_run definition and call sites ---'
rg -n -C 8 'dry_run[[:space:]]*\(|function[[:space:]]+dry_run|dry_run=' \
  test/bin/ci_phase_iso_build.sh test/bin

printf '%s\n' '--- source directive and common.sh header ---'
sed -n '220,230p' test/bin/ci_phase_iso_build.sh
sed -n '1,45p' test/bin/common.sh

printf '%s\n' '--- ShellCheck with external sources enabled ---'
shellcheck -x test/bin/ci_phase_iso_build.sh || true

Repository: openshift/microshift

Length of output: 11787


🏁 Script executed:

#!/usr/bin/bash
set -euo pipefail

printf '%s\n' '--- ShellCheck configuration and invocations ---'
rg -n -C 3 'shellcheck|SC1091|external-sources' \
  --glob '!.git/**' \
  --glob '!vendor/**' \
  --glob '!deps/**' \
  --glob '!etcd/**' \
  .

printf '%s\n' '--- relevant tracked configuration files ---'
git ls-files '*shellcheck*' '.shellcheckrc' '.github/**' '.ci/**' | head -80

Repository: openshift/microshift

Length of output: 50377


Use the required shebang and fix the RPM macro quoting.

  • Change line 1 to #!/usr/bin/bash.
  • Change rpm -E %{rhel} to rpm -E '%{rhel}' to remove SC1083.
  • Validate with shellcheck --external-sources test/bin/ci_phase_iso_build.sh.
🧰 Tools
🪛 Shellcheck (0.11.0)

[warning] 215-215: This { is literal. Check expression (missing ;/\n?) or quote it.

(SC1083)


[warning] 215-215: This } is literal. Check expression (missing ;/\n?) or quote it.

(SC1083)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/bin/ci_phase_iso_build.sh` at line 215, Update
test/bin/ci_phase_iso_build.sh to use the required #!/usr/bin/bash shebang and
quote the %{rhel} RPM macro in the dnf installation command as rpm -E '%{rhel}'.
Validate the script with shellcheck --external-sources.

Sources: Coding guidelines, Linters/SAST tools

scenario.sh check_dependencies() unconditionally starts the mirror
registry if not running, which fails for RPM scenarios because no
container images list exists. Skip the mirror registry check when
the scenario type is rpm.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

pre-commit.check-secrets: ENABLED
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants