Skip to content

Refactor telco5g PTP tests to use CI-built images#81171

Open
edcdavid wants to merge 2 commits into
openshift:mainfrom
edcdavid:refactor-downstream-ci
Open

Refactor telco5g PTP tests to use CI-built images#81171
edcdavid wants to merge 2 commits into
openshift:mainfrom
edcdavid:refactor-downstream-ci

Conversation

@edcdavid

@edcdavid edcdavid commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Onboard k8snetworkplumbingwg/ptp-operator and k8snetworkplumbingwg/linuxptp-daemon into OpenShift CI to build upstream PTP images and promote them to the ptp-upstream namespace
  • Replace build_images() (~200 lines, ~12 min privileged pod) in telco5g-ptp-tests-commands.sh with get_ci_images() that resolves image pullspecs from either the OCP release payload (downstream) or ci-operator dependency injection (upstream)
  • Always pass all three image overrides (IMG, LINUXPTP_DAEMON_IMAGE, SIDECAR_EVENT_IMAGE) to make deploy for both upstream and downstream
  • Update prow-status dashboard phase parsing to match the new log anchors (get_ci_images instead of build_images)

Image sources

Path Operator Daemon Sidecar
Downstream release payload ptp-operator release payload ptp release payload cloud-event-proxy
Upstream CI-built from k8snetworkplumbingwg/ptp-operator CI-built from k8snetworkplumbingwg/linuxptp-daemon release payload cloud-event-proxy

Bootstrapping note

The upstream test (e2e-telco5g-ptp-upstream) depends on images from the ptp-upstream imagestream, which won't be populated until the postsubmit promotion jobs run on the k8snetworkplumbingwg repos after this PR merges. The first upstream nightly run may fail until those imagestreams bootstrap. Downstream tests are unaffected.

Test plan

  • Verify make update passes (done locally)
  • Rehearse downstream PTP test to confirm release payload image resolution works
  • After merge, confirm postsubmit jobs run on k8snetworkplumbingwg repos and populate ptp-upstream imagestream
  • Confirm upstream nightly PTP test passes once imagestreams are populated
  • Verify prow-status dashboard still parses phase timelines correctly

Summary by CodeRabbit

This PR onboards k8snetworkplumbingwg/ptp-operator and k8snetworkplumbingwg/linuxptp-daemon into OpenShift CI so their images are built and promoted for telco5g PTP testing. It updates the PTP test workflow to consume CI-built images instead of building them inline, and wires the downstream test step to use the new upstream image dependencies.

Practically, this means:

  • ptp-operator and linuxptp-daemon now have CI/operator configs that build from their repositories and promote images into ptp-upstream
  • the telco5g PTP test script now resolves image pullspecs from CI/release payloads via get_ci_images() and passes them into make deploy
  • the Prow step config now declares upstream image dependencies for the test job
  • Prow plugin config and OWNERS files were added for the new repositories

The PR also updates dashboard/log parsing to follow the new image-resolution flow.

Onboard k8snetworkplumbingwg/ptp-operator and
k8snetworkplumbingwg/linuxptp-daemon into OpenShift CI so that
upstream-built images are available for telco5g PTP e2e tests.

Both repos build from their upstream Dockerfiles (public base images)
and promote to the ptp-upstream namespace, enabling the telco5g test
infrastructure to deploy upstream PTP images without rebuilding from
source during test execution.
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: CHILL

Plan: Enterprise

Run ID: 1bcb95c6-d8c2-4bbb-b4d0-8ecc2aeaac9b

📥 Commits

Reviewing files that changed from the base of the PR and between ca1f342 and 78654c0.

⛔ Files ignored due to path filters (2)
  • ci-operator/jobs/k8snetworkplumbingwg/linuxptp-daemon/OWNERS is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/k8snetworkplumbingwg/ptp-operator/OWNERS is excluded by !ci-operator/jobs/**
📒 Files selected for processing (6)
  • ci-operator/config/k8snetworkplumbingwg/linuxptp-daemon/OWNERS
  • ci-operator/config/k8snetworkplumbingwg/ptp-operator/OWNERS
  • ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh
  • ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-ref.yaml
  • core-services/prow/02_config/k8snetworkplumbingwg/linuxptp-daemon/_pluginconfig.yaml
  • core-services/prow/02_config/k8snetworkplumbingwg/ptp-operator/_pluginconfig.yaml
✅ Files skipped from review due to trivial changes (3)
  • ci-operator/config/k8snetworkplumbingwg/linuxptp-daemon/OWNERS
  • ci-operator/config/k8snetworkplumbingwg/ptp-operator/OWNERS
  • ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-ref.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • core-services/prow/02_config/k8snetworkplumbingwg/linuxptp-daemon/_pluginconfig.yaml
  • core-services/prow/02_config/k8snetworkplumbingwg/ptp-operator/_pluginconfig.yaml
  • ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh

Walkthrough

The PR adds ci-operator build and OWNERS metadata for linuxptp-daemon and ptp-operator, wires new Prow trigger and step dependencies, and rewrites the telco5g PTP test script to resolve images from CI, deploy the operator, run conformance modes, and publish reports.

Changes

PTP CI and test wiring

Layer / File(s) Summary
CI configs and OWNERS
ci-operator/config/k8snetworkplumbingwg/linuxptp-daemon/k8snetworkplumbingwg-linuxptp-daemon-main.yaml, ci-operator/config/k8snetworkplumbingwg/ptp-operator/k8snetworkplumbingwg-ptp-operator-main.yaml, ci-operator/config/k8snetworkplumbingwg/linuxptp-daemon/OWNERS, ci-operator/config/k8snetworkplumbingwg/ptp-operator/OWNERS
linuxptp-daemon and ptp-operator gain new ci-operator build/promotion configs and generated OWNERS metadata.
Prow triggers and step dependencies
core-services/prow/02_config/k8snetworkplumbingwg/linuxptp-daemon/_pluginconfig.yaml, core-services/prow/02_config/k8snetworkplumbingwg/ptp-operator/_pluginconfig.yaml, ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-ref.yaml
Both repos gain trigger plugin configs, and telco5g-ptp-tests declares upstream image dependencies.
Image lookup and script setup
ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh
get_ci_images() replaces in-script image builds, and the script updates branch, KUBECONFIG, and temporary workdir setup.
Deployment and conformance prep
ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh
The script clones ptp-operator, rewrites pull policies, deploys with explicit image variables, waits for linuxptp-daemon, and clones ptp-operator-conformance-test.
Test execution and reports
ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh
Per-mode functests now write separate JUnit files, capture exit codes, undeploy, and generate merged HTML, JUnit, and JSON outputs.

Sequence Diagram(s)

sequenceDiagram
  participant Script as telco5g-ptp-tests-commands.sh
  participant ReleaseInfo as oc adm release info
  participant OperatorRepo as ptp-operator
  participant ConformanceRepo as ptp-operator-conformance-test
  participant Cluster as kubectl / oc

  Script->>ReleaseInfo: resolve PTP_OPERATOR_IMAGE, PTP_DAEMON_IMAGE, SIDECAR_IMG
  Script->>OperatorRepo: clone branch and run make deploy
  Script->>Cluster: kubectl rollout status linuxptp-daemon
  Script->>ConformanceRepo: clone TEST_BRANCH
  loop each TEST_MODE
    Script->>ConformanceRepo: update event_output_file and run make functests
  end
  Script->>OperatorRepo: make undeploy
Loading

Estimated review effort

🎯 4 (Complex) | ⏱️ ~45 minutes


Important

Pre-merge checks failed

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

❌ Failed checks (1 error, 2 warnings)

Check name Status Explanation Resolution
No-Sensitive-Data-In-Logs ❌ Error New [INFO] IMG/DAEMON_IMG/SIDECAR_IMG logs print full image pullspecs, which can reveal registry/internal hostnames. Remove or redact those values in logs; log only logical image names or masked hosts instead of full pullspecs.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Ipv6 And Disconnected Network Test Compatibility ⚠️ Warning The test wrapper still clones GitHub repos and pulls a quay.io image, so it depends on external connectivity and isn’t disconnected-safe. Mirror deps into ci-operator/internal registries, avoid git clone/quay.io in the job, or mark it [Skipped:Disconnected] if external access is unavoidable.
✅ Passed checks (12 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: telco5g PTP tests are refactored to use CI-built images.
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 specs or test titles were added/changed; the PR only touches CI YAMLs and a shell step script, and scans found no It/Describe/Context/When titles.
Test Structure And Quality ✅ Passed No Ginkgo test code was changed; the PR only touches YAML, OWNERS, plugin config, and a shell step, and no Describe/It/Eventual tokens appear in touched files.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e test bodies were added; the PR only changes CI configs and a shell test launcher, with no MicroShift-unsupported API use.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No Ginkgo e2e tests were added or changed; the PR only updates CI config and a shell orchestration script.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only adds CI/operator config and test-script image wiring; I found no new affinity, topology spread, nodeSelector, PDB, or replica changes.
Ote Binary Stdout Contract ✅ Passed Touched files are YAML/OWNERS plus a shell script; no Go main/TestMain/Ginkgo setup or stdout/logging patterns appear in the modified dirs.
No-Weak-Crypto ✅ Passed Touched files only add CI YAML and shell image-resolution logic; exact scans found no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB or secret/token comparisons.
Container-Privileges ✅ Passed No touched YAML or step-registry manifest sets privileged, hostPID/Network/IPC, SYS_ADMIN, root, or allowPrivilegeEscalation.
✨ 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 bear-redhat and dgoodwin June 26, 2026 21:58

@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/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh`:
- Around line 14-20: Separate the `oc adm release info` lookups from the
`export` statements in `telco5g_ptp_tests_commands` so failures are not hidden
by command substitution. Assign the results to `IMG`, `DAEMON_IMG`, and
`SIDECAR_IMG` first, then export them only after each lookup succeeds, using the
existing `release_image` flow and the `oc adm release info` calls as the anchor
points.
🪄 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: 10b5a0c6-d54d-450d-9361-e903e936ab24

📥 Commits

Reviewing files that changed from the base of the PR and between 4da93a9 and d0a573b.

⛔ Files ignored due to path filters (4)
  • ci-operator/jobs/k8snetworkplumbingwg/linuxptp-daemon/k8snetworkplumbingwg-linuxptp-daemon-main-postsubmits.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/k8snetworkplumbingwg/linuxptp-daemon/k8snetworkplumbingwg-linuxptp-daemon-main-presubmits.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/k8snetworkplumbingwg/ptp-operator/k8snetworkplumbingwg-ptp-operator-main-postsubmits.yaml is excluded by !ci-operator/jobs/**
  • ci-operator/jobs/k8snetworkplumbingwg/ptp-operator/k8snetworkplumbingwg-ptp-operator-main-presubmits.yaml is excluded by !ci-operator/jobs/**
📒 Files selected for processing (7)
  • ci-operator/config/k8snetworkplumbingwg/linuxptp-daemon/k8snetworkplumbingwg-linuxptp-daemon-main.yaml
  • ci-operator/config/k8snetworkplumbingwg/ptp-operator/k8snetworkplumbingwg-ptp-operator-main.yaml
  • ci-operator/config/openshift/release/openshift-release-main__nightly-4.22.yaml
  • ci-operator/config/openshift/release/openshift-release-main__nightly-4.23.yaml
  • ci-operator/config/openshift/release/openshift-release-main__nightly-5.0.yaml
  • ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh
  • ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-ref.yaml

Comment thread ci-operator/step-registry/telco5g/ptp/tests/telco5g-ptp-tests-commands.sh Outdated
@edcdavid edcdavid force-pushed the refactor-downstream-ci branch from d0a573b to 8d085af Compare June 26, 2026 22:10
@edcdavid

Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@edcdavid edcdavid force-pushed the refactor-downstream-ci branch from 8d085af to ca1f342 Compare June 26, 2026 22:24
@edcdavid

Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

Replace the build_images() function (~200 lines, ~12 min) that spawns
a privileged pod to clone and build PTP components from source with
get_ci_images() that resolves pullspecs from either the release payload
(downstream) or ci-operator dependency injection (upstream).

Changes:
- Remove build_images() privileged pod, oc client download, and Go
  version setup (only needed for source builds)
- Add get_ci_images() with two paths: downstream extracts images from
  the release payload via oc adm release info; upstream uses images
  injected by ci-operator dependencies
- Always pass all three image overrides (IMG, LINUXPTP_DAEMON_IMAGE,
  SIDECAR_EVENT_IMAGE) to make deploy for both upstream and downstream
- Add base_images and dependencies for upstream PTP images to the
  4.22, 4.23, and 5.0 nightly configs
- Declare PTP_OPERATOR_IMAGE and PTP_DAEMON_IMAGE dependencies in
  the telco5g-ptp-tests ref YAML
- Update prow-status dashboard phase parsing to match new log anchors
@edcdavid edcdavid force-pushed the refactor-downstream-ci branch from ca1f342 to 78654c0 Compare June 26, 2026 22:44
@openshift-ci

openshift-ci Bot commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: edcdavid

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 Jun 26, 2026
@edcdavid

Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

@edcdavid: 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]
@edcdavid: 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-k8snetworkplumbingwg-linuxptp-daemon-main-images k8snetworkplumbingwg/linuxptp-daemon presubmit Presubmit changed
pull-ci-k8snetworkplumbingwg-ptp-operator-main-images k8snetworkplumbingwg/ptp-operator presubmit Presubmit changed
periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.17-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.13-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.18-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.16-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-5.0-e2e-telco5g-ptp-upstream N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.14-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.23-e2e-telco5g-ptp-upstream N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.19-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.23-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp-upstream N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.15-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-5.0-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.20-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.21-e2e-telco5g-ptp N/A periodic Registry content changed
periodic-ci-openshift-release-main-nightly-4.12-e2e-telco5g-ptp N/A periodic Registry content changed
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.

@edcdavid

Copy link
Copy Markdown
Contributor Author

/pj-rehearse periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

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

@openshift-ci

openshift-ci Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

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

Test name Commit Details Required Rerun command
ci/prow/check-gh-automation-tide 78654c0 link true /test check-gh-automation-tide
ci/prow/check-gh-automation 78654c0 link true /test check-gh-automation
ci/prow/config 78654c0 link true /test config
ci/rehearse/periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp 78654c0 link unknown /pj-rehearse periodic-ci-openshift-release-main-nightly-4.22-e2e-telco5g-ptp

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