Skip to content

Update quay ARO Azure e2e tests to quay 3.17 on OCP 4.21#80771

Open
LiZhang19817 wants to merge 4 commits into
openshift:mainfrom
LiZhang19817:update-quay318-317-azure-testing
Open

Update quay ARO Azure e2e tests to quay 3.17 on OCP 4.21#80771
LiZhang19817 wants to merge 4 commits into
openshift:mainfrom
LiZhang19817:update-quay318-317-azure-testing

Conversation

@LiZhang19817

@LiZhang19817 LiZhang19817 commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Remove outdated quay 3.12, 3.13, and 3.14 ARO periodic e2e test jobs
  • Add quay 3.17 ARO e2e test targeting OCP 4.21 with FBC catalog source
  • Update base images and build root to OCP 4.21

Test plan

  • Verify generated Prow jobs are correct via make update
  • Confirm periodic job triggers as expected after merge

🤖 Generated with Claude Code

Summary by CodeRabbit

This PR updates OpenShift CI’s Quay ARO periodic e2e testing configuration in openshift/release to drop outdated Quay-on-ARO coverage and standardize the environment on OCP 4.21 with FBC (file-based catalog) catalog source.

  • ARO periodic jobs refreshed (Quay 3.12/3.13/3.14 → Quay 3.17/3.18):

    • Removes periodic cron jobs for older Quay versions (notably the quay312/313/314 variants targeting OCP 4.19).
    • Introduces new cron jobs:
      • quay-e2e-tests-quay317-aro-ocp421
      • quay-e2e-tests-quay318-aro-ocp421
    • Both new jobs use the azure-qe cluster profile and are scheduled yearly via cron: 0 12 1 1 * (Jan 1 at 12:00).
  • FBC / catalog-source wiring for Quay tests:

    • Sets catalog-source related sources to fbc-operator-catalog:
      • CSO_SOURCE, QBO_SOURCE, QUAY_OPERATOR_SOURCE
    • Includes the ref: quay-tests-enable-quay-catalogsource test step so the Quay catalog source is enabled as part of the job.
  • OCP 4.21 alignment:

    • Updates CI base images and build root to target OCP 4.21:
      • base_images tags for cli and upi-installer4.21
      • build_root.image_stream_tag.tag → corresponding 4.21 release tag
      • releases.latest.candidate.version"4.21"
  • Azure deployment step hardening (SAS validity window):

    • Adjusts Terraform SAS generation to use dynamic times:
      • start = timestamp()
      • expiry = timeadd(timestamp(), "8760h")
  • QBO QE test script reliability fixes:

    • Improves failure handling by enabling pipefail, initializing QBO_RC, running the main QBO body in a subshell, capturing its exit code, and continuing subsequent steps even if QBO fails.
    • Tightens resource discovery by using explicit jsonpath selectors instead of parsing oc output.
  • Generation + verification:

    • Because jobs are generated via the Prow job configuration system, the PR expects verification by running make update and confirming the generated periodic job(s) match the Quay 3.17 / OCP 4.21 / FBC setup.
    • The author’s suggested rehearse command targets the periodic CI job:
      periodic-ci-quay-quay-tests-master-quay-aro-ocp-quay-e2e-tests-quay317-aro-ocp421
    • Final validation includes confirming the periodic job triggers correctly after merge to main.

Replace quay 3.12/3.13/3.14 ARO periodic jobs with a single quay 3.17
job targeting OCP 4.21, using FBC catalog source.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 19, 2026
@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

The PR updates Quay ARO OCP test infrastructure to target OCP 4.21, replaces OCP 4.19 cron jobs with new Quay 3.17/3.18 test jobs on the Azure QE profile, improves QBO test script error handling and environment discovery logic, and makes Azure SAS token expiration dynamic via Terraform functions.

Changes

Quay ARO OCP Test Infrastructure Update

Layer / File(s) Summary
OCP 4.21 version targeting
ci-operator/config/quay/quay-tests/quay-quay-tests-master__quay-aro-ocp.yaml
cli and upi-installer base image tags updated to "4.21", build_root.image_stream_tag.tag updated to the OCP 4.21/Go 1.25 release tag, and releases.latest.candidate.version set to "4.21".
Quay 3.17/3.18 test job configuration
ci-operator/config/quay/quay-tests/quay-quay-tests-master__quay-aro-ocp.yaml
Old OCP 4.19 cron jobs replaced with quay-e2e-tests-quay317-aro and quay-e2e-tests-quay318-aro, using azure-qe cluster profile with CSO/QBO/Quay operator channels pinned to stable-3.17 and stable-3.18, corresponding QUAY_VERSION environment variables, and pinned index image digests.
QBO test script error handling and discovery
ci-operator/step-registry/quay-tests/qbo-qe-test/quay-tests-qbo-qe-test-commands.sh
Script enables pipefail and errexit flags to trap failures, captures subshell exit codes into QBO_RC, updates Quay namespace/registry/pod discovery to use oc jsonpath queries instead of tail/whitespace splitting, and adds conditional error logging with forced successful exit.
Azure SAS token dynamic expiration
ci-operator/step-registry/quay-tests/deploy-quay-azure/quay-tests-deploy-quay-azure-commands.sh
Storage account SAS token start and expiry switched from hard-coded date strings to dynamic Terraform functions (timestamp() and timeadd(timestamp(), "8760h")).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested labels

lgtm, rehearsals-ack


Important

Pre-merge checks failed

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

❌ Failed checks (1 error)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error The deploy-quay-azure script copies terraform.tgz to SHARED_DIR, which includes terraform.tfstate containing actual SAS tokens and Azure access keys in plaintext. Exclude terraform.tfstate from the archive: change tar -cvzf terraform.tgz --exclude=".terraform" * to tar -cvzf terraform.tgz --exclude=".terraform" --exclude="*.tfstate*" *
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: updating Quay ARO Azure e2e tests to Quay 3.17 on OCP 4.21, which aligns with the primary objectives of removing outdated test jobs and introducing a new Quay 3.17 test job targeting OCP 4.21.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 PR modifies only YAML CI configuration and shell deployment/testing scripts - no Ginkgo test files (*.go with It(), Describe() definitions) are modified, making this check not applicable.
Test Structure And Quality ✅ Passed This PR modifies CI configuration YAML and Bash shell scripts for deployment/testing orchestration, not Ginkgo test code. The custom check is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests are added in this PR. Changes are limited to YAML CI configuration and bash infrastructure scripts, so the MicroShift test compatibility check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests are added in this PR. Changes are limited to CI configuration YAML and bash deployment scripts, which are not subject to SNO compatibility checks.
Topology-Aware Scheduling Compatibility ✅ Passed PR contains only CI job configuration, test scripts, and infrastructure provisioning code with zero topology-aware scheduling constraints introduced. Changes are out of scope for this check.
Ote Binary Stdout Contract ✅ Passed The OTE Binary Stdout Contract check applies to Go test binaries. This PR modifies only YAML config and shell scripts—no Go test code is present, making the check inapplicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR does not add any new Ginkgo e2e tests. Changes are limited to Prow job configuration (YAML) and bash helper scripts. Check is not applicable.
No-Weak-Crypto ✅ Passed No weak cryptographic algorithms (MD5, SHA1, DES, RC4, 3DES, Blowfish, ECB), custom crypto implementations, or unsafe secret comparisons detected in the three modified files.
Container-Privileges ✅ Passed No container privilege configurations (privileged: true, hostPID, hostNetwork, hostIPC, SYS_ADMIN, allowPrivilegeEscalation, runAsRoot) were added or modified in this PR.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@openshift-ci openshift-ci Bot requested review from Prucek and hector-vido June 19, 2026 03:49
Replace hardcoded expired Azure SAS token dates (2024-07-25) with
dynamic timestamp()/timeadd() calls, and add CSO_SOURCE/QBO_SOURCE
env vars set to fbc-operator-catalog for the quay 3.17 ARO job.

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

openshift-ci Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: LiZhang19817

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

@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: 1

🤖 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
`@ci-operator/step-registry/quay-tests/deploy-quay-azure/quay-tests-deploy-quay-azure-commands.sh`:
- Around line 81-82: The start variable in the SAS token configuration is set
directly to timestamp() without any time buffer, which can cause clock skew
failures when the token is immediately used. Modify the start assignment to use
the timeadd() function to backdate the start time by 15 minutes, following the
same pattern used for the expiry calculation. This will provide a safety margin
to prevent "not yet valid" authentication errors due to clock skew between the
Terraform provider and Azure Storage service.
🪄 Autofix (Beta)

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: 299ff082-8dca-4196-bce8-33c6b3297904

📥 Commits

Reviewing files that changed from the base of the PR and between 8f4dbc1 and 089db74.

📒 Files selected for processing (2)
  • ci-operator/config/quay/quay-tests/quay-quay-tests-master__quay-aro-ocp.yaml
  • ci-operator/step-registry/quay-tests/deploy-quay-azure/quay-tests-deploy-quay-azure-commands.sh
🚧 Files skipped from review as they are similar to previous changes (1)
  • ci-operator/config/quay/quay-tests/quay-quay-tests-master__quay-aro-ocp.yaml

Comment on lines +81 to +82
start = timestamp()
expiry = timeadd(timestamp(), "8760h")

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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Azure Storage SAS best practice: should SAS start time be set in the past to avoid clock skew (for example 10-15 minutes)?

💡 Result:

Yes, it is a recommended best practice to set the SAS start time in the past to account for clock skew [1][2]. Because different machines (the client generating the token and the Azure service validating it) may have slightly different current times, setting a SAS start time to the exact current time can lead to intermittent authentication failures (typically 403 errors) during the first few minutes of the token's life [1][3][4]. Official Microsoft guidance recommends two main approaches to avoid this: 1. Set the start time to be at least 15 minutes in the past [1][2]. This creates a buffer that ensures the token is treated as valid immediately, even if there is a discrepancy between clocks [1][5]. 2. Omit the start time entirely [1][6][2]. When the start time is not specified, Azure Storage defaults the start time to the current time, making the SAS valid immediately in all cases without requiring a manual buffer [1][6][4]. The same principle applies to expiration times; you should be aware that clock skew can cause a token to be rejected if it appears expired due to time differences between systems [1][7][3]. Ensuring that systems generating tokens have their clocks synchronized (e.g., via NTP) is also a fundamental best practice for preventing these issues [8].

Citations:


🏁 Script executed:

cat -n ci-operator/step-registry/quay-tests/deploy-quay-azure/quay-tests-deploy-quay-azure-commands.sh | sed -n '75,200p'

Repository: openshift/release

Length of output: 4104


Backdate SAS token start time to prevent clock skew failures.

Lines 81–82 set start = timestamp() without any buffer, but the SAS token is used immediately afterward (line 194). This can cause intermittent "not yet valid" authentication failures due to clock skew between the Terraform provider and Azure Storage service. Per Microsoft best practices, backdate the start time by 15 minutes to stabilize provisioning.

Suggested patch
-  start  = timestamp()
-  expiry = timeadd(timestamp(), "8760h")
+  start  = timeadd(timestamp(), "-15m")
+  expiry = timeadd(timestamp(), "8760h")
📝 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
start = timestamp()
expiry = timeadd(timestamp(), "8760h")
start = timeadd(timestamp(), "-15m")
expiry = timeadd(timestamp(), "8760h")
🤖 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
`@ci-operator/step-registry/quay-tests/deploy-quay-azure/quay-tests-deploy-quay-azure-commands.sh`
around lines 81 - 82, The start variable in the SAS token configuration is set
directly to timestamp() without any time buffer, which can cause clock skew
failures when the token is immediately used. Modify the start assignment to use
the timeadd() function to backdate the start time by 15 minutes, following the
same pattern used for the expiry calculation. This will provide a safety margin
to prevent "not yet valid" authentication errors due to clock skew between the
Terraform provider and Azure Storage service.

Re-sort env vars alphabetically after make update.

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

Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-quay-quay-tests-master-quay-aro-ocp-quay-e2e-tests-quay317-aro-ocp421

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@LiZhang19817: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

- Replace pipe chains with jsonpath queries in qbo-qe-test to fix
  exit 141 (SIGPIPE) from head closing pipes under set -o pipefail
- Wrap QBO test body in subshell so failures don't block the
  subsequent CSO test step
- Update ARO job cron schedules to yearly and add quay 3.18 job

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

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@LiZhang19817: the pj-rehearse plugin accommodates running rehearsal tests for the changes in this PR. Expand 'Interacting with pj-rehearse' for usage details. The following rehearsable tests have been affected by this change:

Test name Repo Type Reason
periodic-ci-quay-quay-tests-master-quay-aro-ocp-quay-e2e-tests-quay318-aro N/A periodic Periodic changed
periodic-ci-quay-quay-tests-master-ocp-421-quay-quay-e2e-tests-quay314-ocp421-lp-interop-fips N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-quay-osd-ocp-quay-e2e-tests-quay313-osd-ocp419 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-415-quay-nightly-quay-e2e-tests-quay313-nightly-ocp415 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-419-quay-quay-e2e-tests-quay313-ocp419-lp-interop N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-4.23-quay-lp-interop-quay-e2e-tests-quay316-ocp422-aws-s3 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-quay-aro-ocp-quay-e2e-tests-quay317-aro N/A periodic Periodic changed
periodic-ci-quay-quay-tests-master-ocp-418-quay-quay-e2e-tests-quay313-ocp418-lp-interop-fips N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-419-quay-quay-e2e-tests-quay315-ocp419 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-417-quay-quay-e2e-tests-quay312-ocp417-lp-interop-fips N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-415-quay-quay-e2e-tests-quay313-ocp415-lp-interop N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-4.21-quay-cr-quay-e2e-tests-quay316-ocp421-aws-s3 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-quay-rosa-ocp-quay-e2e-tests-quay312-rosa-ocp419 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-4.21-quay-cr-quay-e2e-tests-quay314-ocp421-lp-interop-aws N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-4.22-quay-lp-interop-quay-e2e-tests-quay316-ocp422-aws-s3 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-418-quay-quay-e2e-tests-quay311-ocp418 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-418-quay-quay-e2e-tests-quay312-ocp418 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-quay-rosa-ocp-quay-e2e-tests-quay314-rosa-ocp419 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-414-quay-quay-e2e-tests-quay313-ocp414-lp-interop N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-quay-osd-ocp-quay-e2e-tests-quay312-osd-ocp419 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-421-arm-quay-quay-e2e-tests-quay318-ocp421-arm N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-420-quay-quay-e2e-tests-quay314-ocp420-lp-interop-fips N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-418-quay-quay-e2e-tests-quay313-ocp418-fips N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-412-quay-quay-e2e-tests-quay313-ocp412 N/A periodic Registry content changed
periodic-ci-quay-quay-tests-master-ocp-419-quay-quay-e2e-tests-quay315-ocp419-fips N/A periodic Registry content changed

A total of 44 jobs have been affected by this change. The above listing is non-exhaustive and limited to 25 jobs.

A full list of affected jobs can be found here

Interacting with pj-rehearse

Comment: /pj-rehearse to run up to 5 rehearsals
Comment: /pj-rehearse skip to opt-out of rehearsals
Comment: /pj-rehearse {test-name}, with each test separated by a space, to run one or more specific rehearsals
Comment: /pj-rehearse more to run up to 10 rehearsals
Comment: /pj-rehearse max to run up to 25 rehearsals
Comment: /pj-rehearse auto-ack to run up to 5 rehearsals, and add the rehearsals-ack label on success
Comment: /pj-rehearse list to get an up-to-date list of affected jobs
Comment: /pj-rehearse abort to abort all active rehearsals
Comment: /pj-rehearse network-access-allowed to allow rehearsals of tests that have the restrict_network_access field set to false. This must be executed by an openshift org member who is not the PR author

Once you are satisfied with the results of the rehearsals, comment: /pj-rehearse ack to unblock merge. When the rehearsals-ack label is present on your PR, merge will no longer be blocked by rehearsals.
If you would like the rehearsals-ack label removed, comment: /pj-rehearse reject to re-block merging.

@LiZhang19817

Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-quay-quay-tests-master-quay-aro-ocp-quay-e2e-tests-quay318-aro

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@LiZhang19817: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel.

@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: 1

🧹 Nitpick comments (1)
ci-operator/step-registry/quay-tests/qbo-qe-test/quay-tests-qbo-qe-test-commands.sh (1)

46-48: 💤 Low value

Consider validating resource existence before using jsonpath results.

The jsonpath queries return empty strings if no resources match, rather than failing. If quay_ns is empty, subsequent commands will fail with potentially confusing errors (e.g., -n "" on line 47).

Since the deployment step should ensure Quay exists before this runs, this is a minor robustness concern.

🛡️ Optional: Add existence validation
-quay_ns=$(oc get quayregistry --all-namespaces -o jsonpath='{.items[0].metadata.namespace}')
-quay_registry=$(oc get quayregistry -n "$quay_ns" -o jsonpath='{.items[0].metadata.name}')
-quay_app_pod=$(oc -n "$quay_ns" get pods -l quay-component=quay-app -o jsonpath='{.items[0].metadata.name}')
+quay_ns=$(oc get quayregistry --all-namespaces -o jsonpath='{.items[0].metadata.namespace}')
+if [[ -z "$quay_ns" ]]; then
+  echo "ERROR: No QuayRegistry found in cluster"
+  exit 1
+fi
+quay_registry=$(oc get quayregistry -n "$quay_ns" -o jsonpath='{.items[0].metadata.name}')
+quay_app_pod=$(oc -n "$quay_ns" get pods -l quay-component=quay-app -o jsonpath='{.items[0].metadata.name}')
+if [[ -z "$quay_app_pod" ]]; then
+  echo "ERROR: No quay-app pod found in namespace $quay_ns"
+  exit 1
+fi
🤖 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
`@ci-operator/step-registry/quay-tests/qbo-qe-test/quay-tests-qbo-qe-test-commands.sh`
around lines 46 - 48, Add validation checks after each of the three jsonpath
queries to ensure the results are not empty before proceeding. After the oc
commands that set quay_ns, quay_registry, and quay_app_pod variables, add
conditional checks (using if statements with -z test) that verify each variable
contains a value, and if not, log a descriptive error message and exit the
script. This prevents confusing errors downstream when empty values are passed
to subsequent commands using these variables.
🤖 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
`@ci-operator/step-registry/quay-tests/qbo-qe-test/quay-tests-qbo-qe-test-commands.sh`:
- Around line 526-532: The script forces exit 0 after a QBO test failure, which
masks the failure from job dashboards and logs. To address this while still
allowing subsequent steps to run, modify the code block where QBO_RC is checked
to write a failure indicator to the shared directory (${SHARED_DIR}) when QBO_RC
is non-zero, so downstream steps or workflow aggregation can detect and properly
report the failure. This way the failure is prominently recorded for failure
visibility without blocking subsequent test steps from executing.

---

Nitpick comments:
In
`@ci-operator/step-registry/quay-tests/qbo-qe-test/quay-tests-qbo-qe-test-commands.sh`:
- Around line 46-48: Add validation checks after each of the three jsonpath
queries to ensure the results are not empty before proceeding. After the oc
commands that set quay_ns, quay_registry, and quay_app_pod variables, add
conditional checks (using if statements with -z test) that verify each variable
contains a value, and if not, log a descriptive error message and exit the
script. This prevents confusing errors downstream when empty values are passed
to subsequent commands using these variables.
🪄 Autofix (Beta)

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: 05da284d-6036-41fc-b4ea-70c842b47fd3

📥 Commits

Reviewing files that changed from the base of the PR and between b102771 and 91d7e8b.

⛔ Files ignored due to path filters (1)
  • ci-operator/jobs/quay/quay-tests/quay-quay-tests-master-periodics.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (2)
  • ci-operator/config/quay/quay-tests/quay-quay-tests-master__quay-aro-ocp.yaml
  • ci-operator/step-registry/quay-tests/qbo-qe-test/quay-tests-qbo-qe-test-commands.sh

Comment on lines +526 to +532
) || QBO_RC=$?

if [ $QBO_RC -ne 0 ]; then
echo "!!! QBO test failed with exit code $QBO_RC, but continuing to allow subsequent steps to run"
fi

exit 0

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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Test failures are masked - consider impact on failure visibility.

The forced exit 0 allows the CSO test step to run, but means QBO test failures won't fail the overall job. The failure is logged, but:

  1. In lengthy CI logs, the message may be missed
  2. The ARO workflow (per context) lacks firewatch configuration that could parse logs for failures
  3. Job dashboards will show this step as "passed" even when tests failed

If this trade-off is acceptable for this use case, consider adding a more prominent failure indicator (e.g., writing failure status to ${SHARED_DIR} for downstream consumption or aggregation).

🤖 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
`@ci-operator/step-registry/quay-tests/qbo-qe-test/quay-tests-qbo-qe-test-commands.sh`
around lines 526 - 532, The script forces exit 0 after a QBO test failure, which
masks the failure from job dashboards and logs. To address this while still
allowing subsequent steps to run, modify the code block where QBO_RC is checked
to write a failure indicator to the shared directory (${SHARED_DIR}) when QBO_RC
is non-zero, so downstream steps or workflow aggregation can detect and properly
report the failure. This way the failure is prominently recorded for failure
visibility without blocking subsequent test steps from executing.

@openshift-ci

openshift-ci Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

@LiZhang19817: The following test 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/rehearse/periodic-ci-quay-quay-tests-master-quay-aro-ocp-quay-e2e-tests-quay317-aro-ocp421 b102771 link unknown /pj-rehearse periodic-ci-quay-quay-tests-master-quay-aro-ocp-quay-e2e-tests-quay317-aro-ocp421

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.

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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant