fix(ci): override stale RELATED_IMAGE_backstage digest in the operator CSV - #5435
gustavolira wants to merge 6 commits into
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5435 +/- ##
===========================================
- Coverage 74.21% 64.04% -10.17%
===========================================
Files 69 57 -12
Lines 799 573 -226
Branches 125 99 -26
===========================================
- Hits 593 367 -226
Misses 205 205
Partials 1 1
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
The container image build workflow finished with status: |
|
The container image build workflow finished with status: |
|
/test ? |
|
/test e2e-osd-gcp-operator-nightly |
|
/test ? |
|
/test e2e-ocp-helm |
|
/retest |
|
/test e2e-osd-gcp-operator-nightly |
1 similar comment
|
/test e2e-osd-gcp-operator-nightly |
|
The osd-gcp validation run (build 2100932305752166400) revealed a gap: on OCP/OSD ≥ 4.18 the installer auto-detects OLM v1 and installs via ClusterExtension, so there is no CSV and the override takes its skip guard — the stale digest stayed in effect and the Pushed a follow-up commit that passes |
|
/test e2e-osd-gcp-operator-nightly |
21dd1b2 to
5cfc575
Compare
|
/test e2e-osd-gcp-operator-nightly |
…r CSV The RHDH operator bundle CSV pins RELATED_IMAGE_backstage to the hub image digest captured at bundle build time. The current next bundle (built 2026-08-31) still pins the 2026-08-04 hub digest, whose bundled install-dynamic-plugins 0.4.0 resolves ref:// references only after the pre-merge disabled pass and crash-loops with: InstallException: Cannot resolve ref:// reference: no plugin named 'backstage-community-plugin-catalog-backend-module-keycloak' found in included plugins The Backstage CR deployment.patch already overrides both containers to $IMAGE_REGISTRY/$IMAGE_REPO:$TAG_NAME, but the installed operator applies the RELATED_IMAGE_backstage env to the install-dynamic-plugins init container after patching, so the stale digest wins there. This has kept showcase-operator deployments red on OSD-GCP, GKE and AKS since early August (zero tests executed). Patch the CSV env right after operator installation so OLM propagates the image under test to the operator deployment, and wait for the rollout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
openshift-ci-tests.sh runs with set -o errexit, so an empty grep result or a missing deployment in the assignment pipelines would abort the whole job instead of reaching the intended skip guards. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…M v1 Review follow-ups: - install-rhdh-catalog-source.sh returns right after creating the Subscription, so poll for the CSV to appear before patching instead of silently skipping on the common race. - Skip immediately (with a log) when RHDH was installed via an OLM v1 ClusterExtension, which has no CSV to patch. - Fail instead of skipping when the CSV exists but cannot be read, so an API error is not masked as a legitimate skip. - Guard the rollout wait with an explicit log::error, and jq exit status can no longer abort the script via errexit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The osd-gcp run on this PR showed install-rhdh-catalog-source.sh auto-detecting OLM v1 on OCP/OSD >= 4.18 and installing via ClusterExtension — no CSV exists there, override_operator_backstage_image takes its skip guard, and the stale RELATED_IMAGE_backstage digest stays in effect (init container still crash-loops on ref:// resolution). Pass --olm-version v0 so the standard operator jobs keep the CSV-based install that the override patches. OLM v1 coverage keeps its dedicated flows (disconnected jobs, RHIDP-14647). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…r install Same RHDHBUGS-3758 hardening as on release-1.9: the install script patches the registry and reads default-route before OpenShift creates it, intermittently failing the install. Expose and wait up front; warn-only on timeout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5cfc575 to
02510b0
Compare
The Route object existing is not enough: right after creation the router/registry data path can still refuse blob uploads (EOF on the operator bundle push, RHDHBUGS-3759). Poll the registry API through the route until it answers 200/401 before handing off to the install script. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
End-to-end validation on
The job's red comes solely from |
|
|
/test e2e-osd-gcp-operator-nightly |
|
@gustavolira: The following test 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. |



Description
All operator-based nightlies (
e2e-osd-gcp-operator-nightly,e2e-gke-operator-nightly,e2e-aks-operator-nightly) have been red for weeks with zero tests executed: theinstall-dynamic-pluginsinit container crash-loops withRoot cause
RELATED_IMAGE_backstageto the hub digest captured at bundle build time. The currentnextbundle (built 2026-08-31) still pinsrhdh-hub-rhel9@sha256:a89235...— the 2026-08-04 build, which bundlesinstall-dynamic-plugins0.4.0. That version resolvesref://references only after the pre-merge disabled pass, so refs pointing at plugins that the catalog index ships disabled (keycloak, scaffolder-relation-processor, rbac…) can never resolve. Fixed in 0.4.1 (rhdh-plugins#4410, 2026-08-20), which today's:nexttag already carries — the same config installs cleanly againstquay.io/rhdh/rhdh-hub-rhel9:next(verified locally with the exact CI ConfigMap).deployment.patchalready overrides both containers to$IMAGE_REGISTRY/$IMAGE_REPO:$TAG_NAME, but the installed operator applies theRELATED_IMAGE_backstageenv to the init container after the patch, so the stale digest wins there (pod events confirm the init container pulls the digest whilebackstage-backendgets:next).Fix
After installing the operator, patch the CSV's
RELATED_IMAGE_backstageto the image under test and wait for OLM to roll the operator deployment. This keeps every operator job testing the same image the helm jobs test, on all branches (nextand-v X.Yinstalls alike).The jq patch and the poll condition were validated against the real
rhdh-operator-bundle:nextCSV.Follow-ups (out of scope here)
nextoperator bundle pinning a 4-week-old hub digest is a productization/midstream issue worth its own report.deployment.patchfor init containers while honoring it for containers looks like an rhdh-operator bug.🤖 Generated with Claude Code