Conversation
Every e2e job here talks to a cloud, and each found its tools a different way: the Azure job had an image with az in it, while the AWS and ROSA jobs fetched an aws CLI from the internet partway through a run. A download that happens after a cluster is already up is the most expensive possible thing to get wrong. Replace azure-e2e-runner with a single e2e-runner carrying aws, gcloud, az and jq, and run every e2e step from it. aws is copied out of upi-installer, which is where the rest of CI gets its cloud tooling; az and gcloud come from the vendors' own repositories, because upi-installer's az is a venv with a baked interpreter path and its gcloud is pinned two releases back. oc is deliberately absent. Each step gets one from cli: latest, built from the release under test, and the entrypoint wrapper appends that directory to PATH rather than prepending it, so an oc in the image would shadow it and every step would quietly run an oc older than the cluster it is talking to. azure-cli-image becomes e2e-runner-image and checks all four tools, their versions, and the aws floor that hack/aws/ensure-cli.sh uses to decide whether to fetch one. It needs no cluster, so a missing tool costs a minute instead of forty.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Central YAML (inherited) Review profile: CHILL Plan: Enterprise Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
Included review availability: Your plan provides up to 12 included reviews per hour; 11 remain after this review. WalkthroughThe CI configuration builds and validates a shared ChangesShared E2E runner
Priority: ⬇️ Low Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Other Suggested reviewers: Merge Risk: ⚪ Minimal · up to The shared runner migration preserves required CLI availability for the migrated E2E steps. No actionable merge risk was identified. 🚥 Pre-merge checks | ✅ 15✅ Passed checks (15 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
@frobware: |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: frobware 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 |
|
/retest |
|
@frobware: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/test all |
|
/retest |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
@frobware: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/retest |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
@frobware: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/retest |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
@frobware: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
/retest |
|
@frobware: your |
|
/retest |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
@frobware: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
/test core-valid |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
/test core-valid |
|
/retest |
|
/pj-rehearse pull-ci-openshift-bgp-cloud-connector-main-e2e-runner-image |
|
@frobware: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
|
@frobware: your |
|
@frobware: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions 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. |
Every e2e job in this config talks to a cloud, and until now each one found its tools a different way. The Azure job ran from an image with
azbaked in; the AWS and ROSA jobs fetched anawsCLI from the internet partway through a run, after a cluster was already up. That last shape is the expensive one to get wrong, and it is what this removes.There is now a single
e2e-runnerimage, builtFROM srcso the Go suite still has its toolchain and its repository, carryingaws,gcloud,azandjq. Every e2e step runs from it.Where each tool comes from, and why:
aws-- copied out ofocp/4.23:upi-installer, which is where the rest of CI gets its cloud tooling. v2 bundles its own Python, so the tree under/usr/local/aws-cliis self-contained and travels.azandgcloud-- installed from Microsoft's and Google's own repositories. Neither survives being copied out of upi-installer: itsazis a venv with a baked interpreter path, and itsgcloudis pinned to 563 where the repository gives 585.jq-- already in the build root at 1.6, installed explicitly so the image states its contract rather than inheriting it.ocis deliberately not in the image. Each step gets one fromcli: latest, built from the release under test, andentrypoint-wrapperappends$CLI_DIRto PATH rather than prepending it:An
ocin the image would therefore shadow it, and every step would quietly run upi-installer'soc-- taken fromocp/4.22:cli-- against a 4.23 cluster.The image test
azure-cli-imagebecomese2e-runner-imageand proves the whole set rather than justaz:command -vroll call naming the resolved path of each tool, walking the whole list so one missing tool does not hide the nextaws --version,gcloud version,az version,jq --version, because resolving on PATH is not the same as workingawsfloor of 2.34.7, the version at whichhack/aws/ensure-cli.shstops fetching one of its own.awscomes from upi-installer, which is rebuilt on its own schedule, so the floor is asserted rather than assumedazroute-server flags the scripts actually pass, unchangedIt needs no cluster and runs in seconds, so a missing tool costs a minute instead of forty.
What this means for openshift/bgp-cloud-connector
hack/aws/ensure-cli.shandhack/gcp/ensure-cli.shboth short-circuit when a new enough CLI is already on PATH, and both now find one: 2.35.24 against a 2.34.7 floor, and 585.0.0 against a 450.0.0 floor. Neither downloads anything in CI any more. Thecredentialsstep ine2e-rosa-operatorno longer prependshack/aws/ensure-cli.sh's output to PATH, because there is nothing left for it to do. Removing the scripts is a separate change over there.Test plan
Built and exercised locally, substituting the build root for
src(which does not exist outside a job) and podman for in-cluster buildah, run as a uid the image does not know:The Go toolchain survives the dnf transaction:
go1.26.7,GNU Make 4.3,git,gccall intact.Two things that local build cannot cover, and that the rehearsal is for: the build itself under buildah on
src, and whether the build cluster can reachpackages.cloud.google.com. Microsoft's repository is already proven reachable by theazinstall this replaces; Google's is not.Summary by CodeRabbit
The bgp-cloud-connector e2e jobs now use a shared
e2e-runnerimage. The image includesaws,gcloud,az, andjq, whileocremains supplied bycli: latest.The CI validation now checks tool availability, versions, the AWS minimum version, and required Azure route-server flags.
The ROSA credentials step no longer changes
PATHfor AWS CLI installer output.