Skip to content

feat(edge-ocp-rc): add multi-release job collection#227

Open
dhensel-rh wants to merge 3 commits into
openshift-eng:mainfrom
dhensel-rh:feat/multi-release-collect
Open

feat(edge-ocp-rc): add multi-release job collection#227
dhensel-rh wants to merge 3 commits into
openshift-eng:mainfrom
dhensel-rh:feat/multi-release-collect

Conversation

@dhensel-rh

@dhensel-rh dhensel-rh commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add scripts/collect.sh to fetch CI jobs for all topologies (TNF, TNA) across releases (4.22, 4.23, 5.0) from Sippy in a single command
  • Restructure job files into release subdirectories (jobs/{release}/) so multiple releases can coexist
  • Update launch.sh and status.sh to resolve paths from the new directory structure

Test plan

  • Run scripts/collect.sh and verify job files are created under jobs/4.22/, jobs/5.0/ etc.
  • Run scripts/launch.sh tnf --list (no version) and verify all releases are shown
  • Run scripts/launch.sh tna 4.22 --list and verify single-release listing works
  • Run scripts/launch.sh tnf 5.0.0 --refresh and verify it writes to jobs/5.0/
  • Run scripts/launch.sh tnf 5.0.0-rc.0 --job all --dry-run and verify jobs resolve correctly

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added automated collection of active jobs from Sippy across supported releases and topologies.
    • Updated job discovery and storage to organize job lists under jobs/<release>/ for TNF/TNA workflows.
    • Improved job listing/refresh to target specific releases/topologies/versions, and made status tracking release-aware.
  • Documentation

    • Refreshed quick-start and directory layout guidance for jobs/<release>/ paths and clarified the recommended collect vs. refresh workflow.
    • Updated the sequential launch delay note: default 10 seconds, with throttling override via DELAY=30 ....

Add collect.sh to fetch CI jobs for all topologies and releases from
Sippy in a single command. Restructure job files into release
subdirectories (jobs/{release}/) and update launch.sh and status.sh
to resolve paths accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-ci

openshift-ci Bot commented Jul 14, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dhensel-rh

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 14, 2026
@coderabbitai

coderabbitai Bot commented Jul 14, 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: b7bfc2d7-2eb6-412c-8f36-4dfe605086d2

📥 Commits

Reviewing files that changed from the base of the PR and between d2d6c88 and 2846dfa.

📒 Files selected for processing (3)
  • plugins/edge-ocp-rc/README.md
  • plugins/edge-ocp-rc/scripts/collect.sh
  • plugins/edge-ocp-rc/scripts/launch.sh
🚧 Files skipped from review as they are similar to previous changes (3)
  • plugins/edge-ocp-rc/README.md
  • plugins/edge-ocp-rc/scripts/collect.sh
  • plugins/edge-ocp-rc/scripts/launch.sh

Walkthrough

The plugin now collects Sippy jobs into release-scoped TNF/TNA files. Launch and status scripts discover, list, refresh, count, and locate jobs using jobs/<release>/, with updated documentation and refresh guidance.

Changes

Release-scoped job management

Layer / File(s) Summary
Collect and document release-scoped job files
plugins/edge-ocp-rc/README.md, plugins/edge-ocp-rc/scripts/collect.sh
Collects Sippy jobs across releases and topologies, classifies regular, z-stream, and y-stream jobs, writes release-specific files, and documents the updated commands and layout.
Release-aware launch workflow
plugins/edge-ocp-rc/scripts/launch.sh
Updates release detection, refresh and listing behavior, file paths, error messages, image verification, delay configuration, and upgrade-job counting.
Release-aware status lookup
plugins/edge-ocp-rc/scripts/status.sh
Derives the release from the target and searches the corresponding release-scoped job tracking files.

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

Possibly related PRs

🚥 Pre-merge checks | ✅ 10 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Ai-Attribution ⚠️ Warning PR/commits explicitly mention Claude Code, and the edge-ocp-rc commits only use Co-Authored-By trailers; no Assisted-by/Generated-by trailers are present. Rewrite the affected commit trailers to use Red Hat Assisted-by or Generated-by attribution for the AI assistance, and remove Co-Authored-By for the AI tool.
✅ Passed checks (10 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: adding multi-release job collection for edge-ocp-rc.
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.
No-Weak-Crypto ✅ Passed Changed files contain no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, no custom crypto, and no secret/token comparisons.
Container-Privileges ✅ Passed Only docs/shell scripts changed; no manifest with privileged settings (privileged, hostPID/Network/IPC, allowPrivilegeEscalation, SYS_ADMIN, runAsUser 0) found.
No-Sensitive-Data-In-Logs ✅ Passed No added logs expose secrets, PII, or tokens; new output is limited to release/job names and status messages.
No-Hardcoded-Secrets ✅ Passed No API keys, tokens, passwords, private keys, credentialed URLs, or long base64-like literals were added in the changed files.
No-Injection-Vectors ✅ Passed No listed injection patterns were present in the changed scripts; user inputs are quoted/validated and there’s no eval/exec/yaml.load/os.system usage.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 markdownlint-cli2 (0.23.0)
plugins/edge-ocp-rc/README.md

markdownlint-cli2 v0.23.0 (markdownlint v0.41.0)
Finding: :plugins/edge-ocp-rc/README.md !node_modules/** !two-node-toolbox/**
Linting: 1 file(s)
Summary: 0 error(s)
AggregateError: Unable to import module 'markdownlint-cli2-formatter-pretty'.
at importModule (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:92:11)
at async Promise.all (index 0)
at async outputResults (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:879:9)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:1072:5)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[errors]: [
Error: Cannot find module 'markdownlint-cli2-formatter-pretty'
Require stack:
- /usr/local/lib/node_modules/markdownlint-cli2/node_modules/markdownlint/lib/resolve-module.cjs
at Module._resolveFilename (node:internal/modules/cjs/loader:1476:15)
at wrapResolveFilen

... [truncated 1078 characters] ...

node:internal/modules/esm/resolve:271:11)
at moduleResolve (node:internal/modules/esm/resolve:861:10)
at defaultResolve (node:internal/modules/esm/resolve:988:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)
at #resolve (node:internal/modules/esm/loader:679:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)
at node:internal/modules/esm/loader:628:32
at TracingChannel.tracePromise (node:diagnostics_channel:362:14) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///markdownlint-cli2-formatter-pretty'
}
]
}


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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

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

Inline comments:
In `@plugins/edge-ocp-rc/README.md`:
- Line 184: Update the delay documentation in the README to match the default
DELAY value used by the launch.sh script, ensuring the stated interval
accurately reflects the script’s behavior and rate-limit guidance.

In `@plugins/edge-ocp-rc/scripts/collect.sh`:
- Around line 33-54: Update the job-file generation flow in collect.sh to write
parsed results to temporary files rather than deleting the existing job files
first. Only after jq and the downstream pipeline complete successfully should
the temporary files replace job_file, job_file_z, and job_file_y atomically;
preserve the existing files when parsing or collection fails, and clean up
temporary files on failure.

In `@plugins/edge-ocp-rc/scripts/launch.sh`:
- Around line 40-51: Update detect_release() so automatic detection does not
select the first matching release from jobs/*/. Require an explicit version when
multiple release directories are present, or fail clearly instead of returning
an arbitrary value; preserve current detection when exactly one release
directory exists.
🪄 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: d8f0f733-306d-4e28-b13f-8279cffa696b

📥 Commits

Reviewing files that changed from the base of the PR and between c6d133e and 4b3986d.

📒 Files selected for processing (4)
  • plugins/edge-ocp-rc/README.md
  • plugins/edge-ocp-rc/scripts/collect.sh
  • plugins/edge-ocp-rc/scripts/launch.sh
  • plugins/edge-ocp-rc/scripts/status.sh

Comment thread plugins/edge-ocp-rc/README.md Outdated
Comment thread plugins/edge-ocp-rc/scripts/collect.sh
Comment thread plugins/edge-ocp-rc/scripts/launch.sh
Write job files atomically via temp files to avoid data loss on Sippy
failures, require explicit version when multiple release dirs exist,
fix delay docs to match default, and make DELAY overridable via env.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@openshift-ci openshift-ci Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label Jul 14, 2026
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. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant