Skip to content

OSSM test: split Istio image build from test execution to fix WebSocket drops - #82416

Open
fjglira wants to merge 3 commits into
openshift:mainfrom
fjglira:split-build-step
Open

OSSM test: split Istio image build from test execution to fix WebSocket drops#82416
fjglira wants to merge 3 commits into
openshift:mainfrom
fjglira:split-build-step

Conversation

@fjglira

@fjglira fjglira commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Long-lived oc rsh sessions fail with WebSocket close 1006 when the kube-apiserver rolls mid-run. This PR eliminates that failure mode by separating build and test into two short-lived steps.

Changes:

  • New servicemesh-istio-images-build step: runs oc rsh to build and push all Istio images to quay.io/sail-dev with a unique tag derived from PULL_PULL_SHA or BUILD_ID.
  • Modified servicemesh-istio-int-tests step: runs prow/integ-suite-ocp.sh directly from the step container (no oc rsh) using KUBECONFIG=$SHARED_DIR/kubeconfig and SKIP_SETUP=true, matching the pattern used by servicemesh-sail-operator-e2e-lpinterop.
  • All 6 config YAMLs updated to wire the new build step before the test step and point TEST_HUB at quay.io/sail-dev.

As a result, the test phase has no WebSocket session to drop; go test communicates with the cluster via the API server over KUBECONFIG, just like any other CI step.

Depends on this PR. We need to update first on istio midstream to be able to run rehearsal over these jobs

Summary by CodeRabbit

  • Updates OpenShift Service Mesh Istio CI to decouple “build Istio images” from “run integration tests”, preventing WebSocket close (1006) failures tied to long-lived oc rsh sessions during kube-apiserver rollouts.
  • Adds a new servicemesh-istio-images-build step in the ci-operator step registry that builds and pushes the required Istio images to quay.io/sail-dev using a unique tag derived from PULL_PULL_SHA (retries/re-triggers) or BUILD_ID (postsubmit), and writes that tag to ${SHARED_DIR}/istio-image-tag for downstream steps.
  • Refactors the servicemesh-istio-int-tests step to run prow/integ-suite-ocp.sh directly in the step container (using KUBECONFIG=$SHARED_DIR/kubeconfig and SKIP_SETUP=true), removing the prior MAISTRA-based oc rsh execution model.
  • Updates the integ test step runtime to work with direct-container execution: completion/retry now hinge on a local marker file (/tmp/ISTIO_TESTS_DONE), debug/cleanup is simplified (no oc rsh debug), and JUnit results are copied from ${ARTIFACT_DIR}/junit/* into ${SHARED_DIR}.
  • Updates the Istio integration test step configuration to use TEST_HUB (set to quay.io/sail-dev) so tests pull prebuilt images, and removes the previous execution dependency on MAISTRA runtime variables.
  • Updates six Istio CI configuration YAMLs to run servicemesh-istio-images-build before their integration test steps and to set TEST_HUB=quay.io/sail-dev.
  • Notes the workflow depends on openshift-service-mesh/istio#860 being updated midstream before rehearsal jobs can run.

@coderabbitai

coderabbitai Bot commented Jul 24, 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

Changes

The CI workflow adds a dedicated Istio image-build step, runs integration tests directly in the test container, and updates master, retest, sail, and release jobs to use the new step with TEST_HUB: quay.io/sail-dev.

Istio CI pipeline

Layer / File(s) Summary
Register and execute Istio image builds
ci-operator/step-registry/servicemesh/istio/images-build/*
Adds step metadata, ownership, credentials, tag handling, Maestra execution, and Quay image publishing.
Run integration tests in the step container
ci-operator/step-registry/servicemesh/istio/int-tests/*
Runs tests locally with shared kubeconfig and pre-built images, updates retries and cleanup, checks local markers, and copies local artifacts.
Wire image builds into Istio jobs
ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-*.yaml
Changes master, retest, sail, and release jobs to reference servicemesh-istio-images-build and set TEST_HUB.

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

Sequence Diagram(s)

sequenceDiagram
  participant CIJob
  participant ImagesBuild
  participant MaestraPod
  participant Quay
  participant IntTests

  CIJob->>ImagesBuild: Start image-build step
  ImagesBuild->>MaestraPod: Copy source and kubeconfig
  MaestraPod->>Quay: Build and push Istio images
  CIJob->>IntTests: Start integration tests
  IntTests->>Quay: Pull images from TEST_HUB
  IntTests->>IntTests: Run tests and copy artifacts to SHARED_DIR
Loading

Suggested labels: rehearsals-ack

Suggested reviewers: dgn, mkralik3

🚥 Pre-merge checks | ✅ 13 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Ipv6 And Disconnected Network Test Compatibility ⚠️ Warning The new int-tests/build steps pull from quay.io, raw.githubusercontent.com, and istio.io, so they require public internet and will break in disconnected IPv6 jobs. Mirror these dependencies in an internal registry/assets or gate them off for disconnected CI; avoid direct public downloads and public registry pulls.
✅ 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 accurately summarizes splitting Istio image build from test execution and the WebSocket-drop fix motivation.
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 No Ginkgo test titles were added or changed; the PR only touches CI YAML and shell scripts.
Test Structure And Quality ✅ Passed Diff contains only CI YAML and shell step-registry scripts; no Ginkgo test code was changed, so the test-quality check is not applicable.
Microshift Test Compatibility ✅ Passed Diff only changes CI YAML and shell step scripts; no Go files or Ginkgo It/Describe/Context/When additions were added.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Go/Ginkgo tests were added; the commit only changes a shell script, so the SNO multi-node test check is not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed Only a shell copy method changed in the images-build script; no manifests, controllers, replicas, affinities, or node selectors were added.
Ote Binary Stdout Contract ✅ Passed PR only changes ci-operator YAML and shell step scripts; no OTE Go binary main/init/TestMain stdout paths were touched.
No-Weak-Crypto ✅ Passed No weak crypto or custom secret comparison was added in the changed Istio CI files; search found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB usage.
Container-Privileges ✅ Passed Scanned the PR YAMLs and new step refs; none contain privileged, hostPID/Network/IPC, SYS_ADMIN, allowPrivilegeEscalation, or root settings.
No-Sensitive-Data-In-Logs ✅ Passed No new password/token/PII logging found; tracing is disabled before reading Quay creds, and remaining echoes only print non-sensitive tags/status.
✨ 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 commented Jul 24, 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 24, 2026
@openshift-ci
openshift-ci Bot requested review from dgn and mkralik3 July 24, 2026 15:49
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@fjglira: pj-rehearse could not automatically process this event because the request waited in queue for longer than 5 minutes. Use /pj-rehearse to trigger rehearsals manually.

@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

🧹 Nitpick comments (2)
ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh (1)

8-18: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

TAG derivation is duplicated across the images-build and int-tests scripts.
Both scripts independently re-implement the same PULL_PULL_SHA/BUILD_ID fallback logic to compute TAG. Since these are separate ci-operator steps within the same job, pass the tag explicitly via ${SHARED_DIR} from the build step instead of recomputing it, removing the risk of the two copies drifting if one is updated without the other.

  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh#L8-L18: after deriving TAG, write it to ${SHARED_DIR}/istio-image-tag for the downstream test step to consume.
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh#L63-L71: replace the re-derivation with TAG="$(cat "${SHARED_DIR}/istio-image-tag")".

Based on coding guidelines for ci-operator/step-registry/**/*-commands.sh: "use ${SHARED_DIR} for passing data between steps instead of printing secrets to logs" — the same SHARED_DIR handoff pattern is the idiomatic way to pass this derived value between steps rather than duplicating the derivation logic.

🤖 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/images-build/servicemesh-istio-images-build-commands.sh`
around lines 8 - 18, Centralize TAG derivation between the two steps: in
ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh
lines 8-18, write the derived TAG to ${SHARED_DIR}/istio-image-tag; in
ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
lines 63-71, remove the PULL_PULL_SHA/BUILD_ID fallback logic and load TAG from
that shared file.

Source: Coding guidelines

ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-ref.yaml (1)

39-42: 🚀 Performance & Scalability | 🔵 Trivial

Re-evaluate resources sizing now that tests run directly in this container.

Documentation now states tests execute directly in the step container rather than being delegated to the MAISTRA pod via oc rsh. The step's resources.requests (cpu: '1', memory: 500Mi) were presumably sized for a mostly-idle orchestration container; running the actual Go integration-test binaries locally (compiling, buffering test/verbose output, retry loop) may need higher limits to avoid CPU throttling or OOM under load.

🤖 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-ref.yaml`
around lines 39 - 42, Re-evaluate and increase the resources.requests CPU and
memory values for the step now that it runs Istio integration-test binaries
directly in the container. Update the resources configuration associated with
the servicemesh-istio-int-tests step, preserving the existing test execution
behavior and choosing capacity suitable for compilation, output buffering, and
retries.
🤖 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/images-build/servicemesh-istio-images-build-commands.sh`:
- Around line 3-6: Disable xtrace immediately around the docker login credential
injection in the command flow, including the oc rsh invocation that interpolates
QUAY_USERNAME and QUAY_PASSWORD, then restore tracing afterward if subsequent
commands require it. Keep the disabled scope minimal and add a clear comment
documenting that tracing is disabled to prevent credential leakage; update the
script’s default tracing behavior only as needed to ensure these credentials are
never emitted.

In
`@ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh`:
- Around line 56-58: Update the configuration parsing flow around
parse-test-config.sh to invoke it only once, capture its generated export
statements, and reuse that result instead of discarding it and running the
script again. Avoid directly evaluating downloaded script output with eval;
write the generated configuration to a controlled temporary or local file and
source it, preserving the SKIP_PARSER_SKIP_TESTS and SKIP_PARSER_SKIP_SUBSUITES
exports.

---

Nitpick comments:
In
`@ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh`:
- Around line 8-18: Centralize TAG derivation between the two steps: in
ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh
lines 8-18, write the derived TAG to ${SHARED_DIR}/istio-image-tag; in
ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
lines 63-71, remove the PULL_PULL_SHA/BUILD_ID fallback logic and load TAG from
that shared file.

In
`@ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-ref.yaml`:
- Around line 39-42: Re-evaluate and increase the resources.requests CPU and
memory values for the step now that it runs Istio integration-test binaries
directly in the container. Update the resources configuration associated with
the servicemesh-istio-int-tests step, preserving the existing test execution
behavior and choosing capacity suitable for compilation, output buffering, and
retries.
🪄 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: 25de24c5-3588-43c9-b01a-1f689f944ae9

📥 Commits

Reviewing files that changed from the base of the PR and between b9e2137 and 32c376e.

📒 Files selected for processing (12)
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-master.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.24.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.26.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.27.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.28.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.30.yaml
  • ci-operator/step-registry/servicemesh/istio/images-build/OWNERS
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-ref.metadata.json
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-ref.yaml
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-ref.yaml

@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 42-44: Update the parse-test-config.sh download step in the
service-mesh Istio integration test commands to fetch it from a reviewed
immutable commit or version instead of mutable main. Verify the downloaded file
against a pinned expected checksum before chmod or any execution, and fail the
job on checksum mismatch.
🪄 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: 8a54d24f-874f-49b8-8b91-71d2e0687e88

📥 Commits

Reviewing files that changed from the base of the PR and between b9e2137 and 717fc6d.

📒 Files selected for processing (12)
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-master.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.24.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.26.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.27.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.28.yaml
  • ci-operator/config/openshift-service-mesh/istio/openshift-service-mesh-istio-release-1.30.yaml
  • ci-operator/step-registry/servicemesh/istio/images-build/OWNERS
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-ref.metadata.json
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-ref.yaml
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-ref.yaml

@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

Caution

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

⚠️ Outside diff range comments (1)
ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh (1)

135-150: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Treat a missing completion marker as failure on the first attempt.

The first-attempt retry path only handles a non-zero exit together with a missing /tmp/ISTIO_TESTS_DONE marker. A zero exit without the marker can therefore bypass retry/failure handling, even though Lines 78-82 define marker absence as incomplete execution. Use the same OR completion invariant as the second attempt.

Proposed fix
- if [ "${TEST_RC}" -ne 0 ] && ! are_tests_done; then
+ if [ "${TEST_RC}" -ne 0 ] || ! are_tests_done; then
🤖 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 135 - 150, Update the first-attempt retry condition in the Istio
test execution flow to use OR semantics: retry whenever TEST_RC is non-zero or
are_tests_done reports a missing completion marker. Keep the existing
second-attempt condition and failure handling unchanged.
🤖 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 66-70: Move the KUBECONFIG export from the later setup block into
the beginning of run_tests, before its invocation of
./prow/check-cluster-ready.sh. Preserve the existing ${SHARED_DIR}/kubeconfig
value and remove the duplicate later export.

---

Outside diff comments:
In
`@ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh`:
- Around line 135-150: Update the first-attempt retry condition in the Istio
test execution flow to use OR semantics: retry whenever TEST_RC is non-zero or
are_tests_done reports a missing completion marker. Keep the existing
second-attempt condition and failure handling unchanged.
🪄 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: 240eb204-1016-4e74-9dc8-393c681bdb05

📥 Commits

Reviewing files that changed from the base of the PR and between 717fc6d and c046e8e.

📒 Files selected for processing (3)
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-commands.sh
  • ci-operator/step-registry/servicemesh/istio/int-tests/servicemesh-istio-int-tests-ref.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • ci-operator/step-registry/servicemesh/istio/images-build/servicemesh-istio-images-build-commands.sh

@fjglira

fjglira commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

@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 27, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

@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 27, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

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

export SKIP_TEST_RUN=\"true\"
export ARTIFACT_DIR=\"${ARTIFACT_DIR}\"
export INSTALL_SAIL_OPERATOR=\"${INSTALL_SAIL_OPERATOR:-false}\"
oc 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.

Do we need this oc version here ? Is that checking if the remote cluster pod has oc client there ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Nope, it's just to make sure which OCP cluster version we are running. I added long time ago and I didn't removed. When we have the doubt about the version it help to have no doubts about the version

export INSTALL_SAIL_OPERATOR=\"${INSTALL_SAIL_OPERATOR:-false}\"
oc version
cd /work
entrypoint prow/integ-suite-ocp.sh

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.

How does this call the build_images() function in the integ-suite-ocp.sh ? Are we passing that function name as an argument in job config or somewhere else ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Because in the integ-suite, there is a logic to specifically build and push the images. So we skip the test run just to help us to build and push there. Upstream way does not work for us, because it's more static. But maybe we can contribute something to make it more flexible and avoid this workaround

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.

Just wondering.
Why to not add a configurable flag to integ-suite-ocp.sh script that would configure the build of the images and push them to the defined HUB.
By default, it would be not used.
Here, we're setting the HUB and quay.io/sail-dev.
But in local development we could use our own quay.io account.

That might help during testing/debugging/development to not rrebuild the images every time the integ-suite-ocp.sh script is being executed.

@fjglira

fjglira commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

@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 27, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

1 similar comment
@fjglira

fjglira commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

@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 27, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

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

Split the monolithic step (build images + run tests inside a privileged pod)
into three sequential steps:

1. servicemesh-istio-copy-src (new): copies source tree and kubeconfig into
   the builder pod via oc cp, following the same pattern as the existing
   servicemesh-sail-operator-copy-src step.

2. servicemesh-istio-images-build (new): oc rsh into the pod with
   SKIP_TEST_RUN=true to build and push Istio images to quay.io/sail-dev.
   Writes the derived image tag (PULL_PULL_SHA or BUILD_ID) to SHARED_DIR.

3. servicemesh-istio-int-tests (modified): runs prow/integ-suite-ocp.sh
   directly from the src step container (no pod). Reads the pre-built image
   tag and hub from SHARED_DIR/TEST_HUB.

Security improvements:
- Credentials are copied into the pod as files via oc cp instead of being
  interpolated into sh -c strings, preventing process table exposure.
- docker login uses --password-stdin instead of -p flag.
- KUBECONFIG is properly quoted in copy-src.

Also renamed QUAY_HUB to TEST_HUB so push destination and pull source
share a single variable, making it consistent with servicemesh-istio-int-tests
and requiring only one env override in the CI config.

Updated all affected test entries in openshift-service-mesh-istio-master.yaml
(and release-1.24 through release-1.30 configs) to use the three-step sequence.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@fjglira
fjglira force-pushed the split-build-step branch from ac03ad0 to 407103b Compare July 28, 2026 09:30
@fjglira

fjglira commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot

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

Signed-off-by: Francisco Herrera <fjglira@gmail.com>
@fjglira

fjglira commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-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.

Signed-off-by: Francisco Herrera <fjglira@gmail.com>
@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-release-1.28-integ-ambient openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-helm openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-pilot openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-security openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.28-integ-telemetry openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-ambient openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-helm openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-pilot openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-security openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.27-integ-telemetry openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.24-integ-helm openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.24-integ-pilot openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.24-integ-security openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.24-integ-telemetry openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-ambient openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-helm openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-pilot openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-security openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-release-1.26-integ-telemetry openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-ambient-retest openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-helm-retest openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-ambient openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot openshift-service-mesh/istio presubmit Ci-operator config changed
pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-security openshift-service-mesh/istio presubmit Ci-operator config changed

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

@fjglira

fjglira commented Jul 28, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-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 28, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-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 28, 2026

Copy link
Copy Markdown
Contributor Author

/pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-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.

@openshift-ci

openshift-ci Bot commented Jul 28, 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 407103b link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-sail-pilot
ci/rehearse/openshift-service-mesh/istio/master/istio-integration-pilot-retest ba966fd link unknown /pj-rehearse pull-ci-openshift-service-mesh-istio-master-istio-integration-pilot-retest

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.

3 participants