HYPERFLEET-1038: add RC E2E job + E2E_REF step registry support#79515
Conversation
|
@ciaranRoche: This pull request references HYPERFLEET-1038 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
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 openshift-eng/jira-lifecycle-plugin repository. |
WalkthroughAdds an rc-e2e Prow job and E2E_REF-driven setup/test steps to optionally build, stage via SHARED_DIR, and run hyperfleet-e2e from a specified git ref, falling back to prebuilt pod-image artifacts when empty. ChangesHyperfleet E2E Ref-Based Testing
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 12✅ Passed checks (12 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml (1)
1-58:⚠️ Potential issue | 🔴 CriticalRun
make updateto generate the rc-e2e job artifacts.The rc-e2e CI configuration variant has been added, but the downstream job YAML files have not been regenerated to include it. The rc-e2e job definition should appear in
ci-operator/jobs/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main-periodics.yaml, but it is currently missing. Per the CI configuration guidelines,make updatemust be run after modifying CI config files to ensure all downstream artifacts are current.🤖 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/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml` around lines 1 - 58, The new CI variant/test "rc-e2e" (tests: - as: rc-e2e) and workflow "openshift-hyperfleet-e2e" were added but downstream job manifests were not regenerated; run `make update` in the repo root to regenerate ci-operator/jobs and prow job YAML (so the rc-e2e entry appears in openshift-hyperfleet-hyperfleet-e2e-main-periodics.yaml), verify the generated job contains the "rc-e2e" test and correct env/workflow values, and commit the updated generated files alongside this config change.
🤖 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/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-commands.sh`:
- Around line 53-54: The git clone invocation using --branch "$E2E_REF" requires
E2E_REF to be a branch or tag name, so either update the documentation to state
"E2E_REF must be a branch or tag name" (replace ambiguous "Git ref (branch/tag)"
with that wording) or change the script to support commit SHAs: remove or avoid
passing --branch when E2E_REF may be a SHA, perform a shallow clone of the repo
to /tmp/e2e-src, then detect if E2E_REF is a commit SHA and, if so, fetch and
checkout that SHA (or otherwise checkout the branch/tag) after cloning;
reference the E2E_REF variable and the git clone invocation in the script when
making the change.
In
`@ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh`:
- Line 59: The shell command invoking ${E2E_BIN} should quote the variable
arguments to prevent word splitting and globbing; update the invocation of the
test command so the LABEL_FILTER and ARTIFACT_DIR variables (used with
--label-filter and --junit-report) are wrapped in quotes when passed to the
${E2E_BIN} test command (referencing E2E_BIN, LABEL_FILTER, and ARTIFACT_DIR in
the script) to ensure safe handling of spaces and glob characters.
- Around line 22-25: The script currently allows silent fallback to the
image-provided E2E binary when E2E_REF is set but ${SHARED_DIR}/hyperfleet-e2e
is missing; update the E2E selection logic to detect this case and fail fast:
when E2E_REF is non-empty and the file ${SHARED_DIR}/hyperfleet-e2e does not
exist, emit a clear error via log (including E2E_REF and expected path) and exit
non-zero instead of continuing to use the default binary. Change the block that
references E2E_REF/SHARED_DIR and set/validate E2E_BIN (symbols: E2E_REF,
SHARED_DIR, hyperfleet-e2e, E2E_BIN) so the absence of the built binary aborts
the job.
---
Outside diff comments:
In
`@ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml`:
- Around line 1-58: The new CI variant/test "rc-e2e" (tests: - as: rc-e2e) and
workflow "openshift-hyperfleet-e2e" were added but downstream job manifests were
not regenerated; run `make update` in the repo root to regenerate
ci-operator/jobs and prow job YAML (so the rc-e2e entry appears in
openshift-hyperfleet-hyperfleet-e2e-main-periodics.yaml), verify the generated
job contains the "rc-e2e" test and correct env/workflow values, and commit the
updated generated files alongside this config change.
🪄 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: 4f337967-7559-4e90-be7b-43ee5c6eca2b
📒 Files selected for processing (5)
ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yamlci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-commands.shci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-ref.yamlci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.shci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-ref.yaml
9f2d65c to
41cecfc
Compare
|
@ciaranRoche, Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
There was a problem hiding this comment.
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/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh`:
- Around line 23-34: The test step misses ensuring ref-specific configs, causing
/tmp/e2e/configs to be left from the image and potentially mismatch E2E_REF;
update the required-check and copy logic to include "configs" (alongside
hyperfleet-e2e, testdata, deploy-scripts) from SHARED_DIR, remove any stale
/tmp/e2e/configs and copy "${SHARED_DIR}/configs" into /tmp/e2e/configs, and (if
used later) set a TESTCONFIGS or otherwise reference the new path so the test
uses the ref-specific configs instead of the image-provided ones.
🪄 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: 3a399334-34ee-4ec8-9d60-e16ed878c3e7
⛔ Files ignored due to path filters (2)
ci-operator/jobs/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main-periodics.yamlis excluded by!ci-operator/jobs/**ci-operator/jobs/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main-presubmits.yamlis excluded by!ci-operator/jobs/**
📒 Files selected for processing (5)
ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yamlci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-commands.shci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-ref.yamlci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.shci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-ref.yaml
41cecfc to
5db04be
Compare
|
/retest-required |
Add a Gangway-triggered RC E2E ci-operator config variant (rc-e2e) that runs tier0+tier1 against per-component Quay images. Uses @Yearly cron so it never runs on its own, only via external Gangway trigger. Add E2E_REF env var to the setup and test step registry refs. When set, the setup step clones hyperfleet-e2e at that ref, builds the binary via make build, and stashes it in SHARED_DIR. The test step picks up the ref-specific binary and testdata. This allows RC testing against a specific version of the test suite without per-release ci-operator configs. Signed-off-by: Ciaran Roche <croche@redhat.com> Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5db04be to
4e32c2a
Compare
|
[REHEARSALNOTIFIER]
Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml (1)
40-51: 💤 Low valueConsider the implications of using
latesttags for component images.The rc-e2e job pins all component images (hyperfleet-adapter, hyperfleet-api, hyperfleet-sentinel) to the
latesttag. While this may be intentional for RC testing against the most recent builds, it reduces reproducibility—the same CI configuration could pull different image versions over time, making it harder to reproduce test results or compare across runs.If this is the desired behavior for RC testing, consider documenting it. Alternatively, if specific RC version testing is needed, you could parameterize the image tags (similar to the E2E_REF pattern) to allow testing against specific RC versions while still defaulting to
latest.🤖 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/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml` around lines 40 - 51, The job currently pins ADAPTER_IMAGE_TAG, API_IMAGE_TAG, and SENTINEL_IMAGE_TAG to "latest", which makes runs non-reproducible; change these to accept parameterized environment values (same pattern as E2E_REF) so CI can be run with specific RC tags while defaulting to "latest" only if not provided, and update the job description to document that behavior so callers know whether the job intentionally follows the latest builds or a pinned RC version.
🤖 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.
Nitpick comments:
In
`@ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml`:
- Around line 40-51: The job currently pins ADAPTER_IMAGE_TAG, API_IMAGE_TAG,
and SENTINEL_IMAGE_TAG to "latest", which makes runs non-reproducible; change
these to accept parameterized environment values (same pattern as E2E_REF) so CI
can be run with specific RC tags while defaulting to "latest" only if not
provided, and update the job description to document that behavior so callers
know whether the job intentionally follows the latest builds or a pinned RC
version.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 4b801e2b-b15c-43a9-a837-67d0ac7f7fe9
📒 Files selected for processing (1)
ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml
|
/pj-rehearse auto-ack |
|
@ciaranRoche: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier1-nightly |
|
@ciaranRoche: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier2-nightly |
|
@ciaranRoche: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-rc-e2e-rc-e2e |
|
@ciaranRoche: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier0-nightly |
|
@ciaranRoche: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse ack |
|
@ciaranRoche: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ciaranRoche, rh-amarin The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
77cce2d
into
openshift:main
Summary
rc-e2e) with@yearlycron, runstier0 || tier1against per-component Quay imagesE2E_REFenv var to setup and test step registry refs, allowing runtime selection of whichhyperfleet-e2ebranch/tag to build and test from viaMULTISTAGE_PARAM_OVERRIDE_E2E_REFE2E_REFis set, setup step clones the repo at that ref, builds the binary, and shares it with the test step viaSHARED_DIR. When unset, uses the pre-built binary from the pod image (main)Why
RC testing needs to run specific E2E test versions against specific component image versions. ci-operator's
extra_refs.base_refis baked at config time and can't be overridden via Gangway, so we handle version selection at the step level. This avoids per-release ci-operator configs entirely.Test plan
make jobsgenerates periodic job YAML without errorsMULTISTAGE_PARAM_OVERRIDE_E2E_REF=mainconfirms clone+build path works🤖 Generated with Claude Code
This PR updates OpenShift CI (openshift/release) configuration for the Hyperfleet E2E suite to add a Gangway-triggerable RC job and to enable runtime selection of the hyperfleet-e2e test artifact (branch or tag) without baking extra_refs into ci-operator jobs.
What changed and where
New ci-operator job variant
@yearlycron so the job is visible to Prow/Gangway but does not run regularly — intended for manual/Gangway-triggered RC testing.#hyperfleet-e2e-statuswith templated links to logs and job history.Step-registry: runtime E2E artifact selection via E2E_REF
Setup step
Test step
Practical impact
@yearlycron) and reports to the configured channel with links to logs/history.Other notes