Skip to content

HYPERFLEET-1038: prefix Gangway-overridable e2e params with MULTISTAGE_PARAM_OVERRIDE_#79699

Open
ciaranRoche wants to merge 1 commit into
openshift:mainfrom
ciaranRoche:HYPERFLEET-1038-fix-gangway-overrides
Open

HYPERFLEET-1038: prefix Gangway-overridable e2e params with MULTISTAGE_PARAM_OVERRIDE_#79699
ciaranRoche wants to merge 1 commit into
openshift:mainfrom
ciaranRoche:HYPERFLEET-1038-fix-gangway-overrides

Conversation

@ciaranRoche
Copy link
Copy Markdown
Member

Summary

Follow-up to #79515. The MULTISTAGE_PARAM_OVERRIDE_E2E_REF override sent via Gangway was silently being dropped — the step pod received E2E_REF with an empty value and the new clone+build path never fired. Confirmed against openshift/ci-tools:

  • applyEnvOverrides (cmd/ci-operator/main.go) stores MULTISTAGE_PARAM_OVERRIDE_* env vars in the test Environment map with the prefix intact (see ci-tools main_test.go test case "Apply overrides").
  • generateParams (pkg/steps/multi_stage/gen.go) builds step-pod env vars by looking each step-ref parameter up in that map by its declared name. Since our step refs declared bare names (E2E_REF, API_IMAGE_TAG, …), the prefixed map entries never matched.

The convention across the rest of the step-registry (aro-hcp, lvms, hypershift, quay, telco, etc. — 83 files, 42 distinct override parameters) is to use the prefixed name as the parameter name end-to-end: declared in the ref, read in the script, sent by Gangway.

Changes

Rename to MULTISTAGE_PARAM_OVERRIDE_* in the e2e step refs, scripts, and both variant configs (nightly + rc-e2e):

  • E2E_REF
  • NAMESPACE_PREFIX
  • API_IMAGE_TAG
  • ADAPTER_IMAGE_TAG
  • SENTINEL_IMAGE_TAG

Step scripts now read the prefixed env var and assign to the bare internal name that deploy-clm.sh and the rest of the script consume. Defaults are unchanged.

Other params (CLUSTER_NAME, REGION, IMAGE_REGISTRY, *_CHART_*, *_IMAGE_REPO, LABEL_FILTER, retry knobs) stay bare — they're not currently sent by the trigger script.

Nightly impact

None. Default values in steps.env are identical; only the keys are prefixed so that ci-operator's generateParams finds them under the new ref-declared parameter names. The PR will rehearse -e2e-tier0-nightly, -e2e-tier1-nightly, -e2e-tier2-nightly, and -rc-e2e-rc-e2e. Tier0 nightly green is sufficient evidence the rename is non-regressing.

Test plan

  • pj-rehearse runs the four periodics with the renamed params; tier0 nightly stays green
  • Post-merge, re-run scratch/trigger-rc-e2e.sh (in the HyperFleet team's local tooling) with E2E_REF=rc-test:
    • Setup step build-log must contain === Building E2E from ref: rc-test === followed by git clone + make build output
    • Test step build-log must reference ${SHARED_DIR}/... paths instead of /e2e/...
    • Verify jq shows {"name":"MULTISTAGE_PARAM_OVERRIDE_E2E_REF","value":"rc-test"} in the setup pod env

🤖 Generated with Claude Code

ci-operator's MULTISTAGE_PARAM_OVERRIDE_* env-var path stores overrides
in the test Environment map with the prefix intact (cmd/ci-operator/main.go
applyEnvOverrides; verified against ci-tools main_test.go). The step-pod
env generator (pkg/steps/multi_stage/gen.go generateParams) then looks
each parameter up by the bare name declared in the step ref, so a
prefixed override never matches a bare-named parameter and gets silently
dropped.

Rename E2E_REF, NAMESPACE_PREFIX, API_IMAGE_TAG, ADAPTER_IMAGE_TAG, and
SENTINEL_IMAGE_TAG to use the MULTISTAGE_PARAM_OVERRIDE_ prefix in the
e2e setup and test step refs and the nightly + rc-e2e variant configs.
Step scripts now read the prefixed env var and assign to the bare
internal name that deploy-clm.sh and the rest of the script expect.

Defaults are unchanged, so nightly behavior is identical (rehearses
must stay green). The fix unblocks Gangway-driven RC E2E runs from
hyperfleet-release: E2E_REF=<branch> will now actually clone+build
hyperfleet-e2e at that ref, and per-component image tags can finally
be overridden for real RCs.

Matches the prefixed-name convention used across the openshift/release
step-registry (83 files, 42 distinct override parameters in aro-hcp,
lvms, hypershift, quay, etc.).

Follow-up to openshift#79515.

Signed-off-by: Ciaran Roche <croche@redhat.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label May 26, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

openshift-ci-robot commented May 26, 2026

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

Details

In response to this:

Summary

Follow-up to #79515. The MULTISTAGE_PARAM_OVERRIDE_E2E_REF override sent via Gangway was silently being dropped — the step pod received E2E_REF with an empty value and the new clone+build path never fired. Confirmed against openshift/ci-tools:

  • applyEnvOverrides (cmd/ci-operator/main.go) stores MULTISTAGE_PARAM_OVERRIDE_* env vars in the test Environment map with the prefix intact (see ci-tools main_test.go test case "Apply overrides").
  • generateParams (pkg/steps/multi_stage/gen.go) builds step-pod env vars by looking each step-ref parameter up in that map by its declared name. Since our step refs declared bare names (E2E_REF, API_IMAGE_TAG, …), the prefixed map entries never matched.

The convention across the rest of the step-registry (aro-hcp, lvms, hypershift, quay, telco, etc. — 83 files, 42 distinct override parameters) is to use the prefixed name as the parameter name end-to-end: declared in the ref, read in the script, sent by Gangway.

Changes

Rename to MULTISTAGE_PARAM_OVERRIDE_* in the e2e step refs, scripts, and both variant configs (nightly + rc-e2e):

  • E2E_REF
  • NAMESPACE_PREFIX
  • API_IMAGE_TAG
  • ADAPTER_IMAGE_TAG
  • SENTINEL_IMAGE_TAG

Step scripts now read the prefixed env var and assign to the bare internal name that deploy-clm.sh and the rest of the script consume. Defaults are unchanged.

Other params (CLUSTER_NAME, REGION, IMAGE_REGISTRY, *_CHART_*, *_IMAGE_REPO, LABEL_FILTER, retry knobs) stay bare — they're not currently sent by the trigger script.

Nightly impact

None. Default values in steps.env are identical; only the keys are prefixed so that ci-operator's generateParams finds them under the new ref-declared parameter names. The PR will rehearse -e2e-tier0-nightly, -e2e-tier1-nightly, -e2e-tier2-nightly, and -rc-e2e-rc-e2e. Tier0 nightly green is sufficient evidence the rename is non-regressing.

Test plan

  • pj-rehearse runs the four periodics with the renamed params; tier0 nightly stays green
  • Post-merge, re-run scratch/trigger-rc-e2e.sh (in the HyperFleet team's local tooling) with E2E_REF=rc-test:
  • Setup step build-log must contain === Building E2E from ref: rc-test === followed by git clone + make build output
  • Test step build-log must reference ${SHARED_DIR}/... paths instead of /e2e/...
  • Verify jq shows {"name":"MULTISTAGE_PARAM_OVERRIDE_E2E_REF","value":"rc-test"} in the setup pod env

🤖 Generated with Claude Code

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.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 26, 2026

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: 2d260bd8-b235-4f71-8e69-fbef95a63307

📥 Commits

Reviewing files that changed from the base of the PR and between c08b579 and d0e68d5.

📒 Files selected for processing (6)
  • ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__e2e.yaml
  • ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml
  • ci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-commands.sh
  • ci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-ref.yaml
  • ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh
  • ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-ref.yaml

Walkthrough

This pull request systematically updates OpenShift Hyperfleet E2E CI configuration and step registry to use MULTISTAGE_PARAM_OVERRIDE_*-prefixed environment variables for image tags, namespace prefix, and E2E reference, replacing direct variable names across nightly tier jobs, RC job configuration, and supporting setup/test step scripts.

Changes

Hyperfleet E2E Multistage Parameter Overrides

Layer / File(s) Summary
Nightly tier job configurations
ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__e2e.yaml
Tier0, tier1, and tier2 nightly jobs are updated to pass MULTISTAGE_PARAM_OVERRIDE_ADAPTER_IMAGE_TAG, MULTISTAGE_PARAM_OVERRIDE_API_IMAGE_TAG, MULTISTAGE_PARAM_OVERRIDE_SENTINEL_IMAGE_TAG, and MULTISTAGE_PARAM_OVERRIDE_NAMESPACE_PREFIX variables while preserving tier-specific LABEL_FILTER and shared environment values.
RC E2E job configuration
ci-operator/config/openshift-hyperfleet/hyperfleet-e2e/openshift-hyperfleet-hyperfleet-e2e-main__rc-e2e.yaml
RC E2E job environment is updated to include the new MULTISTAGE_PARAM_OVERRIDE_* variables for image tags and namespace prefix alongside existing shared variables, replacing the prior direct variable entries.
E2E setup step parameters and implementation
ci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-ref.yaml, ci-operator/step-registry/openshift-hyperfleet/e2e/setup/openshift-hyperfleet-e2e-setup-commands.sh
Step parameter definitions are renamed to use MULTISTAGE_PARAM_OVERRIDE_* prefixes for namespace, image tags, and E2E ref; setup script resolves these variables with defaults (latest for image tags, e2e for namespace prefix) and uses them for downstream namespace and deployment configuration.
E2E test step parameters and implementation
ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-ref.yaml, ci-operator/step-registry/openshift-hyperfleet/e2e/test/openshift-hyperfleet-e2e-test-commands.sh
Step parameter definitions are renamed to MULTISTAGE_PARAM_OVERRIDE_ADAPTER_IMAGE_TAG and MULTISTAGE_PARAM_OVERRIDE_E2E_REF with updated Gangway override documentation; test script reads these variables with appropriate defaults and applies them when selecting adapter image and E2E binary overrides.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • openshift/release#79515: Both PRs update the RC E2E workflow and step registry to support overriding hyperfleet-e2e via environment variable; this PR wires the capability through the MULTISTAGE_PARAM_OVERRIDE_E2E_REF variable.

Suggested labels

ok-to-test, rehearsals-ack

Suggested reviewers

  • rafabene
  • kuudori
🚥 Pre-merge checks | ✅ 12
✅ 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 clearly and specifically describes the main change: prefixing Gangway-overridable e2e parameters with MULTISTAGE_PARAM_OVERRIDE_, which is confirmed by the detailed summaries showing systematic renaming of parameters across multiple configuration and script files.
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 PR contains no Ginkgo test definitions; it only modifies CI/prow configuration YAML and E2E infrastructure shell scripts. Check is not applicable.
Test Structure And Quality ✅ Passed This PR modifies CI configuration YAML files and shell scripts, not Ginkgo test code. The custom check for Ginkgo test quality is not applicable.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests added. PR only modifies CI operator configs and setup/test scripts for parameter renaming, not test code itself.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests added. PR only modifies CI YAML configs and shell scripts; no test code (.go) files are present.
Topology-Aware Scheduling Compatibility ✅ Passed PR modifies only CI prow configuration and test step scripts with no deployment manifests, operator code, controllers, or scheduling constraints; topology-aware scheduling check not applicable.
Ote Binary Stdout Contract ✅ Passed PR contains only YAML config and bash shell script changes; no OTE Go binary code modified, so stdout contract check is not applicable.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed No new Ginkgo e2e tests added in this PR. Changes are solely to CI/CD infrastructure (YAML configs and shell scripts) for environment variable handling. Check is not applicable.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

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

@openshift-ci openshift-ci Bot requested review from kuudori and tirthct May 26, 2026 10:45
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 26, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ciaranRoche

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 May 26, 2026
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

[REHEARSALNOTIFIER]
@ciaranRoche: 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
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier0-nightly N/A periodic Ci-operator config changed
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier1-nightly N/A periodic Ci-operator config changed
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-e2e-tier2-nightly N/A periodic Ci-operator config changed
periodic-ci-openshift-hyperfleet-hyperfleet-e2e-main-rc-e2e-rc-e2e N/A periodic Ci-operator config changed

Prior to this PR being merged, you will need to either run and acknowledge or opt to skip these rehearsals.

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.

@ciaranRoche
Copy link
Copy Markdown
Member Author

/pj-rehearse auto-ack

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

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

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci Bot commented May 26, 2026

@ciaranRoche: all tests passed!

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.

@openshift-merge-bot openshift-merge-bot Bot added the rehearsals-ack Signifies that rehearsal jobs have been acknowledged label May 26, 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. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. rehearsals-ack Signifies that rehearsal jobs have been acknowledged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants