Skip to content

Conversation

@rm3l
Copy link
Member

@rm3l rm3l commented Jan 28, 2026

Description

Fix the nightly checks that have been failing because this example manifest would not succeed in starting RHDH.

Which issue(s) does this PR fix or relate to

PR acceptance criteria

  • Tests
  • Documentation

How to test changes / Special notes to the reviewer

I checked locally that make test-e2e passes:

[...]
Ran 7 of 8 Specs in 1260.116 seconds
SUCCESS! -- 7 Passed | 0 Failed | 0 Pending | 1 Skipped
PASS

Ginkgo ran 1 suite in 21m3.309702877s
Test Suite Passed

EDIT: Confirmed in the latest nightly run: https://github.com/redhat-developer/rhdh-operator/actions/runs/21434648352

@openshift-ci
Copy link

openshift-ci bot commented Jan 28, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign gazarenkov for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found 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

@rm3l
Copy link
Member Author

rm3l commented Jan 28, 2026

/cherry-pick release-1.9

@openshift-cherrypick-robot

@rm3l: once the present PR merges, I will cherry-pick it on top of release-1.9 in a new PR and assign it to you.

Details

In response to this:

/cherry-pick release-1.9

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.

@sonarqubecloud
Copy link

@rhdh-qodo-merge
Copy link

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

RHDHBUGS-2558 - Partially compliant

Compliant requirements:

  • Ensure the referenced example manifest used by E2E can successfully start RHDH.

Non-compliant requirements:

  • Investigate why nightly E2E checks are failing on main and release-1.9.

Requires further human verification:

  • Fix the failing nightly E2E checks so the pipeline succeeds again.
⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🔒 No security concerns identified
⚡ Recommended focus areas for review

Behavior Change

The example manifest no longer deploys the TechDocs backend plugin (it was removed in this change). Confirm this is intentional for the E2E scenario and that no tests/consumers expect TechDocs to be present in this example.

          myorg:
            organization: '${GITHUB_ORG}'
            schedule:
              # supports cron, ISO duration, "human duration" (used below)
              frequency: { minutes: 30}
              # supports ISO duration, "human duration (used below)
              timeout: { minutes: 3}
              initialDelay: { seconds: 15}
- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-gitlab:bs_1.45.3__0.7.5'
  disabled: false
  pluginConfig:
    catalog:
      providers:
        gitlab: {}
Compatibility Risk

The plugin package entries were switched from local ./dynamic-plugins/dist/... paths to OCI references with specific bs_...__... tags. Validate that the operator/runtime used by nightly E2E supports OCI plugin resolution for these plugins, and that these pinned tags are available and compatible with the RHDH version under test.

- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/roadiehq-scaffolder-backend-module-utils:bs_1.45.3__4.1.1'
  disabled: false
- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-github:bs_1.45.3__0.11.2'
  disabled: false
  pluginConfig:
    catalog:
      providers:
        github:
          myorg:
            organization: '${GITHUB_ORG}'
            schedule:
              # supports cron, ISO duration, "human duration" (used below)
              frequency: { minutes: 30}
              # supports ISO duration, "human duration (used below)
              timeout: { minutes: 3}
              initialDelay: { seconds: 15}
- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-gitlab:bs_1.45.3__0.7.5'
  disabled: false
📚 Focus areas based on broader codebase context

Compatibility

The newly added OCI package references omit the !<plugin-id> suffix used elsewhere for OCI plugin export overlays. If the overlay registry layout expects :tag!pluginName, these shortened references may fail to resolve or load the intended plugin at runtime; validate the required OCI reference format for these plugins. (Ref 2, Ref 3)

- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/roadiehq-scaffolder-backend-module-utils:bs_1.45.3__4.1.1'
  disabled: false
- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-github:bs_1.45.3__0.11.2'
  disabled: false
  pluginConfig:
    catalog:
      providers:
        github:
          myorg:
            organization: '${GITHUB_ORG}'
            schedule:
              # supports cron, ISO duration, "human duration" (used below)
              frequency: { minutes: 30}
              # supports ISO duration, "human duration (used below)
              timeout: { minutes: 3}
              initialDelay: { seconds: 15}
- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-gitlab:bs_1.45.3__0.7.5'
  disabled: false

Reference reasoning: Existing dynamic plugin definitions using the same rhdh-plugin-export-overlays OCI registry specify package strings in the form oci://...:<tag>!<plugin-id>, which indicates the loader may rely on the ! suffix to select the exported plugin content. The PR’s OCI references differ from that established format, so aligning them reduces risk of resolution/loading failures.

📄 References
  1. redhat-developer/rhdh-operator/examples/rhdh-cr.yaml [45-68]
  2. redhat-developer/rhdh/dynamic-plugins.default.yaml [1536-1552]
  3. redhat-developer/rhdh/dynamic-plugins.default.yaml [1389-1414]
  4. redhat-developer/rhdh/dynamic-plugins.default.yaml [1267-1292]
  5. redhat-developer/rhdh/scripts/rhdh-openshift-setup/values.yaml [5-13]
  6. redhat-developer/rhdh-operator/dist/rhdh/install.yaml [2185-2194]
  7. redhat-developer/rhdh-operator/bundle/rhdh/manifests/rhdh-default-config_v1_configmap.yaml [372-381]
  8. redhat-developer/rhdh-operator/dist/rhdh/install.yaml [2206-2215]

@rhdh-qodo-merge
Copy link

PR Type

Bug fix


Description

  • Switch dynamic plugin references from local paths to OCI image references

  • Update plugin package URLs to use RHDH plugin export overlays registry

  • Remove TechDocs backend plugin configuration that was causing nightly failures

  • Fix RHDH CR example manifest to successfully start in nightly checks


File Walkthrough

Relevant files
Bug fix
rhdh-cr-with-app-configs.yaml
Convert plugins to OCI references and remove TechDocs config

examples/rhdh-cr-with-app-configs.yaml

  • Replaced local dynamic plugin paths with OCI image references from
    ghcr.io registry
  • Updated three plugin packages:
    roadiehq-scaffolder-backend-module-utils,
    backstage-plugin-catalog-backend-module-github, and
    backstage-plugin-catalog-backend-module-gitlab
  • Removed TechDocs backend plugin configuration block that was causing
    startup failures
  • All plugins now reference versioned OCI images with specific Backstage
    compatibility tags
+3/-16   

@rm3l rm3l changed the title fix(nightly): switch to plugins OCI references in RHDH CR to fix the nightly checks fix(nightly): switch to plugins OCI references in example to fix the nightly checks Jan 28, 2026
@rhdh-qodo-merge
Copy link

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Restore removed TechDocs backend plugin

Restore the backstage-plugin-techdocs-backend-dynamic plugin that was removed,
using its OCI reference to maintain TechDocs functionality in the example
configuration.

examples/rhdh-cr-with-app-configs.yaml [114-116]

                      initialDelay: { seconds: 15}
--      - package: ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic
--        disabled: false
--        pluginConfig:
--          # Reference documentation https://backstage.io/docs/features/techdocs/configuration
--          # Note: After experimenting with basic setup, use CI/CD to generate docs
--          # and an external cloud storage when deploying TechDocs for production use-case.
--          # https://backstage.io/docs/features/techdocs/how-to-guides#how-to-migrate-from-techdocs-basic-to-recommended-deployment-approach
--          techdocs:
--            builder: local
--            generator:
--              runIn: local
--            publisher:
--              type: local
--      - package: ./dynamic-plugins/dist/backstage-plugin-catalog-backend-module-gitlab-dynamic
-+      - package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-gitlab:bs_1.45.3__0.7.5'
-         disabled: false
+      - package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-techdocs-backend:bs_1.45.3__1.15.2'
+        disabled: false
+        pluginConfig:
+          # Reference documentation https://backstage.io/docs/features/techdocs/configuration
+          # Note: After experimenting with basic setup, use CI/CD to generate docs
+          # and an external cloud storage when deploying TechDocs for production use-case.
+          # https://backstage.io/docs/features/techdocs/how-to-guides#how-to-migrate-from-techdocs-basic-to-recommended-deployment-approach
+          techdocs:
+            builder: local
+            generator:
+              runIn: local
+            publisher:
+              type: local
+      - package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-gitlab:bs_1.45.3__0.7.5'
+        disabled: false
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies the complete removal of the techdocs plugin, which contradicts the PR's apparent goal of just switching to OCI references, and this change could break functionality for users of this example.

High
Organization
best practice
Add missing dependent pull Secret

Since these plugins are now pulled via OCI, include a referenced image-pull
Secret (with dummy placeholder values) and wire it into the example CR/Pod pull
configuration so users can apply the example without additional undocumented
setup.

examples/rhdh-cr-with-app-configs.yaml [98-116]

 plugins:
+  # Plugins are pulled from an OCI registry; configure an imagePullSecret if your registry requires auth.
+  # Example placeholder (create separately): Secret `rhdh-plugins-pull-secret` of type `kubernetes.io/dockerconfigjson`.
   - package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/roadiehq-scaffolder-backend-module-utils:bs_1.45.3__4.1.1'
     disabled: false
   - package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-github:bs_1.45.3__0.11.2'
     disabled: false
     pluginConfig:
       catalog:
         providers:
           github:
             myorg:
               organization: '${GITHUB_ORG}'
               schedule:
                 # supports cron, ISO duration, "human duration" (used below)
                 frequency: { minutes: 30}
                 # supports ISO duration, "human duration (used below)
                 timeout: { minutes: 3}
                 initialDelay: { seconds: 15}
   - package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-plugin-catalog-backend-module-gitlab:bs_1.45.3__0.7.5'
     disabled: false
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Example manifests should be complete and runnable by including required dependent resources (e.g., registry pull Secrets) with safe placeholder values.

Low
General
Pin OCI image by digest

Pin the OCI package reference to a specific sha256 digest instead of a mutable
tag to ensure immutable and reproducible plugin versions.

examples/rhdh-cr-with-app-configs.yaml [99]

-- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/roadiehq-scaffolder-backend-module-utils:bs_1.45.3__4.1.1'
+- package: 'oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/roadiehq-scaffolder-backend-module-utils@sha256:<DIGEST>'
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why: The suggestion proposes a good practice for ensuring reproducible builds by pinning to a digest, but using tags is also a valid and common strategy, especially in example files.

Low
  • More

# supports ISO duration, "human duration (used below)
timeout: { minutes: 3}
initialDelay: { seconds: 15}
- package: ./dynamic-plugins/dist/backstage-plugin-techdocs-backend-dynamic
Copy link
Member Author

Choose a reason for hiding this comment

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

Dropped this as it is not strictly necessary in the tests. It seems to be enabled out of the box anyway by RHDH.

@rm3l
Copy link
Member Author

rm3l commented Jan 28, 2026

Merging to trigger the nightly workflows.

@rm3l rm3l merged commit fef601d into redhat-developer:main Jan 28, 2026
8 of 9 checks passed
@rm3l rm3l deleted the rhdhbugs-2558-rhdh-operator-nightly-e2e-checks-failing-on-main-and-release-1.9 branch January 28, 2026 10:22
@openshift-cherrypick-robot

@rm3l: new pull request created: #2225

Details

In response to this:

/cherry-pick release-1.9

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants