Skip to content

OSSM: Run Istio/Sail builder-pod suites detached to survive oc rsh drops#82368

Closed
fjglira wants to merge 3 commits into
openshift:mainfrom
fjglira:improve-container-exec
Closed

OSSM: Run Istio/Sail builder-pod suites detached to survive oc rsh drops#82368
fjglira wants to merge 3 commits into
openshift:mainfrom
fjglira:improve-container-exec

Conversation

@fjglira

@fjglira fjglira commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Replace long-lived oc rsh in Istio integ, Sail e2e, and scorecard steps with detached nohup execution + done/RC marker polling.
  • Dump the full in-pod test log to the Prow build log and artifacts after each run.

Reason

Cluster instability was closing the multi-hour oc rsh WebSocket (close 1006 / unexpected EOF), killing suites mid-run and leaving retries on dirty state.

Made with Cursor

Summary by CodeRabbit

  • Updates Service Mesh CI step-registry scripts for Istio integration tests, Sail operator E2E (OCP), and Sail operator scorecard to run test suites as detached in-pod nohup background processes (started from a copied in-pod runner script) rather than keeping long-lived interactive oc rsh sessions open.
  • Adds marker-based coordination to prevent WebSocket disconnect flakiness: each suite clears stale markers, starts the detached runner, then polls until both a DONE marker and an RC exit-code marker exist in the builder/test pod.
  • Improves post-run diagnostics and visibility by dumping the full detached in-pod test log (/tmp/test-run.log) into the Prow build log and saving it to ARTIFACT_DIR as detached-test-run.log.
  • Makes retries/teardown and artifact collection more resilient by tolerating transient oc exec failures during polling, retrying when completion markers (and previously also JUnit reports) are missing/incomplete, and continuing gracefully when artifact/JUnit copy steps fail.
  • Adjusts the Hypershift-backed Istio E2E workflow to set COMPUTE_NODE_TYPE to m5.2xlarge to provide scheduling headroom for the builder pod (instead of the default m5.xlarge).

…t drops.

Long-lived oc rsh sessions were failing with websocket close 1006 on cluster instability; start suites with nohup, poll done/RC markers, and dump the full test log to Prow.

Co-authored-by: Cursor <cursoragent@cursor.com>
@fjglira fjglira changed the title Run Istio/Sail builder-pod suites detached to survive oc rsh drops OSSM: Run Istio/Sail builder-pod suites detached to survive oc rsh drops Jul 23, 2026
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

The scripts replace long-lived oc rsh test execution with detached in-pod runners, marker-based polling, return-code propagation, full log capture, and more tolerant retry and artifact handling. The Hypershift workflow also sets an explicit compute node size.

Changes

Detached test execution

Layer / File(s) Summary
Execution markers and pod helpers
ci-operator/step-registry/servicemesh/{istio/int-tests,sail-operator/e2e-ocp,sail-operator/scorecard}/*-commands.sh
Adds short oc exec helpers, completion markers, polling, return-code reads, and detached-log capture.
Detached runner startup and result propagation
ci-operator/step-registry/servicemesh/{istio/int-tests,sail-operator/e2e-ocp,sail-operator/scorecard}/*-commands.sh
Runs suites through copied in-pod runners that write RC and DONE markers and redirect output to log files.
Retry, cleanup, and artifact handling
ci-operator/step-registry/servicemesh/{istio/int-tests,sail-operator/e2e-ocp,sail-operator/scorecard}/*-commands.sh
Accounts for missing markers, tolerates cleanup and copy failures, and collects logs, artifacts, and JUnit outputs.
Workflow sizing and supporting updates
ci-operator/step-registry/servicemesh/istio/e2e/hypershift/servicemesh-istio-e2e-hypershift-workflow.yaml, ci-operator/step-registry/servicemesh/{istio/int-tests,sail-operator/e2e-ocp,sail-operator/scorecard}/*-commands.sh
Sets Hypershift compute sizing and updates execution comments and formatting.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CIShell
  participant TestPod
  participant DetachedRunner
  participant MarkerFiles
  CIShell->>TestPod: Copy and start detached runner
  TestPod->>DetachedRunner: Run test command
  DetachedRunner->>MarkerFiles: Write RC and DONE markers
  CIShell->>TestPod: Poll markers with oc exec
  TestPod-->>CIShell: Return completion state and RC
Loading

Possibly related PRs

  • openshift/release#82374: Modifies the Sail Operator scorecard execution path with an alternate non-oc rsh test orchestration model.

Suggested labels: rehearsals-ack

Suggested reviewers: dgn, zmiklank

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: running Istio/Sail builder-pod suites detached to avoid oc rsh drops.
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 only changed file is a workflow YAML; no Ginkgo test titles were added or modified.
Test Structure And Quality ✅ Passed PASS: The PR only modifies a workflow YAML; no Ginkgo test code or test assertions are changed, so this check is not applicable.
Microshift Test Compatibility ✅ Passed The PR only changes a workflow YAML env var; no new/modified Ginkgo tests or unsupported MicroShift APIs/features are introduced.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The only changed file is a workflow YAML; no Ginkgo tests or SNO-sensitive test logic were added.
Topology-Aware Scheduling Compatibility ✅ Passed Only a HyperShift workflow env override to upsized workers was added; no nodeSelectors, affinities, spread constraints, replica logic, or control-plane assumptions.
Ote Binary Stdout Contract ✅ Passed The PR only changes CI shell/YAML files; no Go main/init/TestMain or other OTE binary stdout code was modified.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo test definitions were added; the PR only changes shell/workflow wrappers, so the IPv6/disconnected test-compatibility check is not applicable.
No-Weak-Crypto ✅ Passed Reviewed the changed shell scripts/YAML; they add test-runner logic only and contain no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret comparisons.
Container-Privileges ✅ Passed The PR only changes a workflow worker-size override and shell scripts; no added privileged, host* or allowPrivilegeEscalation settings were found.
No-Sensitive-Data-In-Logs ✅ Passed Actual diff only changes worker sizing in a workflow YAML; no logging code was added or altered, so no new sensitive-data exposure.
✨ 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 dgn and zmiklank July 23, 2026 17:24
@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: fjglira

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 Jul 23, 2026
@fjglira

fjglira commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

🤖 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/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh`:
- Around line 65-90: Add a wall-clock deadline or maximum elapsed-poll limit to
the wait_for_tests function in
ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
(lines 65-90),
ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh
(lines 81-106), and
ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh
(lines 83-108). Make the loop return failure when the deadline is exceeded,
while preserving marker detection and consecutive poll-failure handling so retry
logic can run promptly.
🪄 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: 0156eb78-9716-4578-805a-98548eb5a332

📥 Commits

Reviewing files that changed from the base of the PR and between 50cf88a and 0b99525.

📒 Files selected for processing (3)
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
  • ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh
  • ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh

Comment on lines +65 to +90
wait_for_tests() {
echo "Polling for detached test completion (${DONE_MARKER} + ${RC_MARKER})..."
local poll_failures=0
local max_consecutive_poll_failures=20

while true; do
if are_tests_done; then
echo "Detached tests finished (markers present)."
return 0
fi

if pod_exec sh -c "true" >/dev/null 2>&1; then
poll_failures=0
tail_test_log
else
poll_failures=$((poll_failures + 1))
echo "WARNING: short oc exec failed while polling (${poll_failures}/${max_consecutive_poll_failures}). Will retry."
if [ "${poll_failures}" -ge "${max_consecutive_poll_failures}" ]; then
echo "ERROR: too many consecutive poll failures talking to ${MAISTRA_SC_POD}" >&2
return 1
fi
fi

sleep "${POLL_INTERVAL}"
done
}

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

for f in \
  ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh \
  ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh \
  ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh
do
  echo "===== $f ====="
  wc -l "$f"
  echo "--- outline ---"
  ast-grep outline "$f" --view expanded || true
  echo "--- wait_for_tests and surrounding context ---"
  rg -n -A40 -B20 'wait_for_tests|run_tests|execute_and_collect_artifacts|tail_test_log|are_tests_done|POLL_INTERVAL|DONE_MARKER|RC_MARKER' "$f"
  echo
done

echo "===== references to step/job timeouts or watchdogs in these directories ====="
rg -n 'timeout|deadline|POLL_INTERVAL|max_consecutive_poll_failures|wait_for_tests' ci-operator/step-registry/servicemesh/istio ci-operator/step-registry/servicemesh/sail-operator

Repository: openshift/release

Length of output: 39512


🏁 Script executed:

#!/bin/bash
set -euo pipefail

for f in \
  ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-ref.yaml \
  ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-ref.yaml \
  ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-ref.yaml
do
  echo "===== $f ====="
  cat -n "$f"
  echo
done

Repository: openshift/release

Length of output: 5095


Add a deadline to wait_for_tests

  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh#L65-L90
  • ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh#L81-L106
  • ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh#L83-L108

If the detached test process dies while the pod stays reachable, this loop can run until the enclosing step timeout before the retry path is reached. Add a wall-clock deadline (or max elapsed polls) so a dead runner fails fast and the retry logic can kick in.

📍 Affects 3 files
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh#L65-L90 (this comment)
  • ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh#L81-L106
  • ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh#L83-L108
🤖 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/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh`
around lines 65 - 90, Add a wall-clock deadline or maximum elapsed-poll limit to
the wait_for_tests function in
ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
(lines 65-90),
ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh
(lines 81-106), and
ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh
(lines 83-108). Make the loop return failure when the deadline is exceeded,
while preserving marker detection and consecutive poll-failure handling so retry
logic can run promptly.

Keeps Prow build logs quieter during polling while still printing the complete suite output (and artifact copy) when the run finishes or fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
@fjglira

fjglira commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

From the 3 failures from rehearse:

Events:
  Type     Reason            Age                    From               Message
  ----     ------            ----                   ----               -------
  Warning  FailedScheduling  15m                    default-scheduler  0/1 nodes are available: 1 Insufficient memory. no new claims to deallocate, preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.
  Warning  FailedScheduling  4m36s (x2 over 9m36s)  default-scheduler  0/1 nodes are available: 1 Insufficient memory. no new claims to deallocate, preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod.
{"component":"entrypoint","error":"wrapped process failed: exit status 1","file":"sigs.k8s.io/prow/pkg/entrypoint/run.go:84","func":"sigs.k8s.io/prow/pkg/entrypoint.Options.internalRun","level":"error","msg":"Error executing test process","severity":"error","time":"2026-07-23T18:18:06Z"}
error: failed to execute wrapped command: exit status 1 
INFO[2026-07-23T18:18:07Z] Step e2e-ocp-servicemesh-istio-e2e failed after 15m13s. 
INFO[2026-07-23T18:18:07Z] Step phase pre failed after 34m47s.        

CI FAILURE

          err: <*errors.errorString | 0x38ddef518010>{
              s: "error executing command: /usr/bin/sh -c oc -n cert-manager-operator  patch subscription openshift-cert-manager-operator --type=merge -p=\"{\\\"spec\\\":{\\\"config\\\":{\\\"env\\\":[{\\\"name\\\":\\\"UNSUPPORTED_ADDON_FEATURES\\\",\\\"value\\\":\\\"IstioCSR=true\\\"}]}}}\": Error from server (NotFound): subscriptions.operators.coreos.com \"openshift-cert-manager-operator\" not found\n",
          },
      }
  In [BeforeAll] at: /work/tests/e2e/cert-manager/cert_manager_test.go:136 @ 07/23/26 18:56:07.042
------------------------------
SSSSSSSSSSSS
Summarizing 2 Failures:
  [FAIL] Cert-manager Installation Istio version: v1.31.0-alpha.1240c864 when root CA issuer for the IstioCSR agent is created [BeforeAll] creates certificate Issuer [smoke, cert-manager, slow]
  /work/tests/e2e/cert-manager/cert_manager_ambient_test.go:132
  [FAIL] Cert-manager Installation Istio version: v1.31.0-alpha.1240c864 when root CA issuer for the IstioCSR agent is created [BeforeAll] creates certificate Issuer [smoke, cert-manager, slow]
  /work/tests/e2e/cert-manager/cert_manager_test.go:136

** Cert Manager failure on ocp 4.23**

  Expected success, but got an error:
      <*errors.errorString | 0x269e8c737590>: 
      Pod "helloworld-v2-7d5954d555-4f8bb" in namespace "mesh-workload" is not ready
      {
          s: "Pod \"helloworld-v2-7d5954d555-4f8bb\" in namespace \"mesh-workload\" is not ready",
      }
  In [It] at: /work/tests/e2e/gatewaycontroller/gateway_controller_test.go:344 @ 07/23/26 19:16:24.6
------------------------------
S
Summarizing 1 Failure:
  [FAIL] Gateway Controller with Install Library when a mesh workload routes traffic through the gateway [It] workload pods are ready with sidecars [gateway-controller, slow]
  /work/tests/e2e/gatewaycontroller/gateway_controller_test.go:344
Ran 10 of 11 Specs in 301.119 seconds
FAIL! -- 9 Passed | 1 Failed | 0 Pending | 1 Skipped
--- FAIL: TestGatewayController (301.39s)
```

**Test Gateway Controller Failure** This is the only one that is a new test failure, so I think this option is viable. I'll run rehearsal again

@fjglira

fjglira commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse more

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@fjglira: 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.

Caution

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

⚠️ Outside diff range comments (4)
ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh (4)

45-47: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Do not ignore marker-cleanup failures before starting a run.

Because DONE_MARKER and RC_MARKER are fixed paths, a failed rm can leave stale markers that are_tests_done accepts for the next attempt. The workflow may then return an old RC before the new runner finishes. Make cleanup a verified prerequisite, or use a per-run marker namespace/token.

🤖 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/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh`
around lines 45 - 47, Update clear_test_markers to make removal of DONE_MARKER,
RC_MARKER, TEST_LOG, and RUNNER_SCRIPT a verified prerequisite by removing the
unconditional “|| true” and propagating or explicitly handling rm failures
before starting a run. Ensure stale fixed-path markers cannot be accepted by
are_tests_done for a new attempt.

77-101: 🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift

Add a deadline for marker polling.

The loop only aborts after repeated oc exec failures. If the detached runner exits before writing markers while the pod remains reachable, the health probe succeeds forever and the retry logic is never reached. Add a wall-clock timeout and/or runner-liveness check.

🤖 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/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh`
around lines 77 - 101, Add a wall-clock deadline or detached-runner liveness
check to wait_for_tests, so polling terminates when the runner exits or markers
never appear even if pod_exec continues succeeding. Preserve the existing
consecutive-failure handling and return a nonzero status when the new deadline
or liveness condition is reached.

199-202: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Keep Quay credentials out of the generated script and argv. The heredoc expands QUAY_PASSWORD into ${local_runner}, and docker login -p exposes it in process arguments. Use --password-stdin and pass the secret at execution time instead.

🤖 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/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh`
around lines 199 - 202, Update the generated script created by the heredoc in
the e2e command flow so it does not expand QUAY_PASSWORD into local_runner or
pass it through docker login arguments. Use docker login’s --password-stdin
option and provide the password securely at script execution time, while
preserving the existing QUAY_USERNAME and registry login behavior.

201-219: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Keep error handling enabled in the detached runner
set +e makes docker login, oc version, cd, and the marker writes non-fatal; if any of those fail, the poller can wait until timeout because DONE_MARKER/RC_MARKER never appear. Keep set -euo pipefail and relax it only around entrypoint with an explicit RC capture.

🤖 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/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh`
around lines 201 - 219, The detached runner currently disables error handling
for setup and marker operations. Replace set +e with set -euo pipefail, and
scope any non-fatal handling only around entrypoint so its exit status is
explicitly captured in rc; ensure RC_MARKER and DONE_MARKER are still written
after entrypoint while failures in docker login, oc version, cd, or marker
writes remain fatal.

Source: Coding guidelines

🤖 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.

Outside diff comments:
In
`@ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh`:
- Around line 45-47: Update clear_test_markers to make removal of DONE_MARKER,
RC_MARKER, TEST_LOG, and RUNNER_SCRIPT a verified prerequisite by removing the
unconditional “|| true” and propagating or explicitly handling rm failures
before starting a run. Ensure stale fixed-path markers cannot be accepted by
are_tests_done for a new attempt.
- Around line 77-101: Add a wall-clock deadline or detached-runner liveness
check to wait_for_tests, so polling terminates when the runner exits or markers
never appear even if pod_exec continues succeeding. Preserve the existing
consecutive-failure handling and return a nonzero status when the new deadline
or liveness condition is reached.
- Around line 199-202: Update the generated script created by the heredoc in the
e2e command flow so it does not expand QUAY_PASSWORD into local_runner or pass
it through docker login arguments. Use docker login’s --password-stdin option
and provide the password securely at script execution time, while preserving the
existing QUAY_USERNAME and registry login behavior.
- Around line 201-219: The detached runner currently disables error handling for
setup and marker operations. Replace set +e with set -euo pipefail, and scope
any non-fatal handling only around entrypoint so its exit status is explicitly
captured in rc; ensure RC_MARKER and DONE_MARKER are still written after
entrypoint while failures in docker login, oc version, cd, or marker writes
remain fatal.

ℹ️ Review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: d7fde5e6-e061-484f-85aa-b3b0746c7f62

📥 Commits

Reviewing files that changed from the base of the PR and between 0b99525 and b15f4a1.

📒 Files selected for processing (3)
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
  • ci-operator/step-registry/servicemesh/sail-operator/e2e-ocp/servicemesh-sail-operator-e2e-ocp-commands.sh
  • ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh
🚧 Files skipped from review as they are similar to previous changes (2)
  • ci-operator/step-registry/servicemesh/sail-operator/scorecard/servicemesh-sail-operator-scorecard-commands.sh
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh

@fjglira

fjglira commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-sail-operator-main-ocp-4.22-e2e-ocp-arm-retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

Temporary rehearsal aid against Insufficient memory on default 1x m5.xlarge guests; drop before merge if kept as a separate change.

Co-authored-by: Cursor <cursoragent@cursor.com>
@fjglira

fjglira commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-sail-operator-main-ocp-4.22-e2e-ocp-arm-retest

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@fjglira

fjglira commented Jul 23, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@fjglira: 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
pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-telemetry-retest openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-security-retest openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-ambient-retest openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-helm-retest openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-telemetry openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-security openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-ambient openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-helm openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-security openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-pilot openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-telemetry openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-ambient openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-helm openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-security openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-pilot openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-telemetry openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-ambient openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-helm openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-security openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-pilot openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-telemetry openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-ambient openshift-service-mesh/istio presubmit Registry content changed
pull-ci-openshift-service-mesh-istio-release-1.24-integ-helm openshift-service-mesh/istio presubmit Registry content changed

A total of 57 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.

@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/servicemesh/istio/e2e/hypershift/servicemesh-istio-e2e-hypershift-workflow.yaml`:
- Around line 17-19: Remove the workflow-scoped COMPUTE_NODE_TYPE override from
the hypershift workflow, or relocate it to an explicitly rehearsal-only
job/configuration. Keep the default worker sizing for normal runs and ensure
only the intended rehearsal path provisions m5.2xlarge workers.
🪄 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: 0082d55b-7745-410f-bb15-a7652be0ad1c

📥 Commits

Reviewing files that changed from the base of the PR and between b15f4a1 and 4008a9d.

📒 Files selected for processing (1)
  • ci-operator/step-registry/servicemesh/istio/e2e/hypershift/servicemesh-istio-e2e-hypershift-workflow.yaml

Comment on lines +17 to +19
# Default hypershift-hostedcluster-create uses 1x m5.xlarge (~16Gi), which often cannot
# schedule the privileged 8Gi builder pod. Upsize guest workers for headroom.
COMPUTE_NODE_TYPE: "m5.2xlarge"

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.

🚀 Performance & Scalability | 🟠 Major | ⚡ Quick win

Do not ship the rehearsal-only worker-size override unconditionally.

COMPUTE_NODE_TYPE is workflow-scoped, so every run now provisions m5.2xlarge workers. The PR objective identifies this as temporary rehearsal capacity; remove it before merge or make it an explicit job/rehearsal-specific override to avoid unnecessary resource consumption and region-dependent provisioning failures.

Proposed fix
-      # Default hypershift-hostedcluster-create uses 1x m5.xlarge (~16Gi), which often cannot
-      # schedule the privileged 8Gi builder pod. Upsize guest workers for headroom.
-      COMPUTE_NODE_TYPE: "m5.2xlarge"
📝 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
# Default hypershift-hostedcluster-create uses 1x m5.xlarge (~16Gi), which often cannot
# schedule the privileged 8Gi builder pod. Upsize guest workers for headroom.
COMPUTE_NODE_TYPE: "m5.2xlarge"
🤖 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/servicemesh/istio/e2e/hypershift/servicemesh-istio-e2e-hypershift-workflow.yaml`
around lines 17 - 19, Remove the workflow-scoped COMPUTE_NODE_TYPE override from
the hypershift workflow, or relocate it to an explicitly rehearsal-only
job/configuration. Keep the default worker sizing for normal runs and ensure
only the intended rehearsal path provisions m5.2xlarge workers.

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

@fjglira: 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/rehearse/openshift-service-mesh/istio/master/istio-integration-sail-pilot b15f4a1 link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-security-retest 4008a9d link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-security-retest
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-pilot-retest 4008a9d link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-sail-ambient b15f4a1 link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-ambient
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-ambient-retest 4008a9d link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-ambient-retest
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-telemetry-retest 4008a9d link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-telemetry-retest
ci/rehearse/openshift-service-mesh/sail-operator/main/ocp-4.22-e2e-ocp-arm-retest 4008a9d link unknown /pj-rehearse pull-ci-openshift-service-mesh-sail-operator-main-ocp-4.22-e2e-ocp-arm-retest
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-sail-telemetry b15f4a1 link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-telemetry
ci/rehearse/openshift-service-mesh/sail-operator/main/ocp-4.22-e2e-ocp 0b99525 link unknown /pj-rehearse pull-ci-openshift-service-mesh-sail-operator-main-ocp-4.22-e2e-ocp
ci/rehearse/openshift-service-mesh/sail-operator/main/ocp-4.23-e2e-next-ocp-retest 0b99525 link unknown /pj-rehearse pull-ci-openshift-service-mesh-sail-operator-main-ocp-4.23-e2e-next-ocp-retest
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-sail-security b15f4a1 link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-security

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.

@fjglira

fjglira commented Jul 24, 2026

Copy link
Copy Markdown
Contributor Author

Closing this PR because this will not be the final option. We will go for a workaround while we apply Option B (#82374) across all the jobs as is a stronger way to execute the test

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