From d963323cfa8e7246a6b760f456938fb930ae58d3 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Mon, 20 Jul 2026 23:45:07 +0200 Subject: [PATCH 01/10] chore(backstage): use next catalog index and skip plugin downloads in CI Switch the catalog index image tag from 1.10 to next, and disable dynamic plugin downloads in all CI values files to speed up PR test cycles. The chart features under test (deployment, config, probes) don't depend on actual plugins. - Set global.dynamic.includes to [] in every CI values file - Set lightspeed.plugins and orchestrator.plugins to [] in CI - Add helm_extra_args input to the test-charts action - Generate a nightly override from values.yaml to restore default plugin configuration in nightly runs Assisted-by: Claude --- .github/actions/test-charts/action.yml | 8 ++++++++ .github/workflows/nightly.yaml | 7 +++++++ charts/backstage/Chart.yaml | 2 +- charts/backstage/README.md | 6 +++--- charts/backstage/ci/default-values.yaml | 8 ++++++++ .../ci/with-custom-dynamic-pvc-claim-spec-values.yaml | 7 +++++++ .../ci/with-custom-image-for-test-pod-values.yaml | 8 ++++++++ charts/backstage/ci/with-lightspeed-disabled-values.yaml | 4 ++++ charts/backstage/ci/with-lightspeed-service-host.yaml | 5 +++++ ...ith-orchestrator-and-dynamic-plugins-npmrc-values.yaml | 5 +++++ charts/backstage/ci/with-orchestrator-values.yaml | 5 +++++ charts/backstage/ci/with-test-pod-disabled-values.yaml | 8 ++++++++ charts/backstage/values.schema.json | 2 +- charts/backstage/values.schema.tmpl.json | 2 +- charts/backstage/values.yaml | 2 +- 15 files changed, 72 insertions(+), 7 deletions(-) diff --git a/.github/actions/test-charts/action.yml b/.github/actions/test-charts/action.yml index c3cd644d..8654ac3b 100644 --- a/.github/actions/test-charts/action.yml +++ b/.github/actions/test-charts/action.yml @@ -17,6 +17,10 @@ inputs: description: 'Specific chart to test (e.g., charts/backstage). When set, only this chart is tested.' required: false default: '' + helm_extra_args: + description: 'Extra arguments to pass to helm via ct install --helm-extra-args (e.g., --values file.yaml)' + required: false + default: '' monitoring_heartbeat: description: 'Enable background cluster monitoring (pod status + events every 30s) during chart tests' required: false @@ -174,6 +178,7 @@ runs: env: INPUT_CHART: ${{ inputs.chart }} INPUT_EXTRA_HELM_ARGS: ${{ inputs.extra_helm_args }} + INPUT_HELM_EXTRA_ARGS: ${{ inputs.helm_extra_args }} INPUT_TARGET_BRANCH: ${{ inputs.target_branch }} INPUT_ALL_CHARTS: ${{ inputs.all_charts }} INPUT_MONITORING_HEARTBEAT: ${{ inputs.monitoring_heartbeat }} @@ -213,6 +218,9 @@ runs: --target-branch "$INPUT_TARGET_BRANCH" --helm-extra-set-args="${EXTRA_ARGS[*]}" ) + if [[ -n "$INPUT_HELM_EXTRA_ARGS" ]]; then + CT_ARGS+=(--helm-extra-args="$INPUT_HELM_EXTRA_ARGS") + fi if [[ -n "$INPUT_CHART" ]]; then CT_ARGS+=(--charts "$INPUT_CHART") elif [[ "$INPUT_ALL_CHARTS" == "true" ]]; then diff --git a/.github/workflows/nightly.yaml b/.github/workflows/nightly.yaml index 93269243..b931de2d 100644 --- a/.github/workflows/nightly.yaml +++ b/.github/workflows/nightly.yaml @@ -108,6 +108,12 @@ jobs: fi done + - name: Generate nightly values override for backstage chart + if: steps.check.outputs.exists == 'true' && matrix.chart == 'backstage' + run: | + yq e '{"global": {"dynamic": {"includes": .global.dynamic.includes}, "lightspeed": {"plugins": .global.lightspeed.plugins}}, "orchestrator": {"plugins": .orchestrator.plugins}}' \ + charts/backstage/values.yaml > /tmp/backstage-nightly-values.yaml + - name: Test charts if: steps.check.outputs.exists == 'true' uses: ./.github/actions/test-charts @@ -117,3 +123,4 @@ jobs: all_charts: 'true' monitoring_heartbeat: ${{ vars.TEST_MONITORING_HEARTBEAT_ENABLED || 'false' }} extra_helm_args: ${{ matrix.chart == 'backstage' && format('--set upstream.backstage.image.repository={0} --set upstream.backstage.image.tag={1} --set upstream.backstage.image.pullPolicy=Always', steps.image.outputs.repo, steps.image.outputs.tag) || '' }} + helm_extra_args: ${{ matrix.chart == 'backstage' && '--values /tmp/backstage-nightly-values.yaml' || '' }} diff --git a/charts/backstage/Chart.yaml b/charts/backstage/Chart.yaml index e0065487..664bc0f9 100644 --- a/charts/backstage/Chart.yaml +++ b/charts/backstage/Chart.yaml @@ -47,4 +47,4 @@ sources: [] # Versions are expected to follow Semantic Versioning (https://semver.org/) # Note that when this chart is published to https://github.com/openshift-helm-charts/charts # it will follow the RHDH versioning 1.y.z -version: 6.2.2 +version: 6.3.0 diff --git a/charts/backstage/README.md b/charts/backstage/README.md index 6cbc5635..52bdf466 100644 --- a/charts/backstage/README.md +++ b/charts/backstage/README.md @@ -1,7 +1,7 @@ # RHDH Backstage Helm Chart for OpenShift -![Version: 6.2.2](https://img.shields.io/badge/Version-6.2.2-informational?style=flat-square) +![Version: 6.3.0](https://img.shields.io/badge/Version-6.3.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) A Helm chart for deploying Red Hat Developer Hub, which is a Red Hat supported version of Backstage. @@ -29,7 +29,7 @@ For the **Generally Available** version of this chart, see: helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add redhat-developer https://redhat-developer.github.io/rhdh-chart -helm install my-backstage redhat-developer/backstage --version 6.2.2 +helm install my-backstage redhat-developer/backstage --version 6.3.0 ``` ## Introduction @@ -168,7 +168,7 @@ Kubernetes: `>= 1.27.0-0` | global.auth.backend.enabled | Enable backend service to service authentication, unless configured otherwise it generates a secret value | bool | `true` | | global.auth.backend.existingSecret | Instead of generating a secret value, refer to existing secret | string | `""` | | global.auth.backend.value | Instead of generating a secret value, use the following value | string | `""` | -| global.catalogIndex | Catalog index configuration for automatic plugin discovery. The `install-dynamic-plugins.py` script pulls this image if the `CATALOG_INDEX_IMAGE` environment variable is set. The `dynamic-plugins.default.yaml` file will be extracted and written to `dynamic-plugins-root` volume mount. | object | `{"extraImages":[],"image":{"registry":"quay.io","repository":"rhdh/plugin-catalog-index","tag":"1.10"}}` | +| global.catalogIndex | Catalog index configuration for automatic plugin discovery. The `install-dynamic-plugins.py` script pulls this image if the `CATALOG_INDEX_IMAGE` environment variable is set. The `dynamic-plugins.default.yaml` file will be extracted and written to `dynamic-plugins-root` volume mount. | object | `{"extraImages":[],"image":{"registry":"quay.io","repository":"rhdh/plugin-catalog-index","tag":"next"}}` | | global.catalogIndex.extraImages | Extra catalog index images for additional plugin discovery in the Extensions UI. Each item must include `registry`, `repository`, and `tag` fields; `name` is optional. Only catalog entities are extracted from extra images (no `dynamic-plugins.default.yaml` handling). | list | `[]` | | global.clusterRouterBase | Shorthand for users who do not want to specify a custom HOSTNAME. Used ONLY with the DEFAULT upstream.backstage.appConfig value and with OCP Route enabled. | string | `"apps.example.com"` | | global.dynamic.includes | Array of YAML files listing dynamic plugins to include with those listed in the `plugins` field. Relative paths are resolved from the working directory of the initContainer that will install the plugins (`/opt/app-root/src`). | list | `["dynamic-plugins.default.yaml"]` | diff --git a/charts/backstage/ci/default-values.yaml b/charts/backstage/ci/default-values.yaml index f29bd4f9..9bdc895f 100644 --- a/charts/backstage/ci/default-values.yaml +++ b/charts/backstage/ci/default-values.yaml @@ -2,6 +2,14 @@ route: enabled: false +# CI: skip dynamic plugin downloads to speed up tests. +# The chart features under test (deployment, config, probes, etc.) don't depend on actual plugins. +global: + dynamic: + includes: [] + lightspeed: + plugins: [] + upstream: postgresql: primary: diff --git a/charts/backstage/ci/with-custom-dynamic-pvc-claim-spec-values.yaml b/charts/backstage/ci/with-custom-dynamic-pvc-claim-spec-values.yaml index 8a13ec41..2dfc6593 100644 --- a/charts/backstage/ci/with-custom-dynamic-pvc-claim-spec-values.yaml +++ b/charts/backstage/ci/with-custom-dynamic-pvc-claim-spec-values.yaml @@ -2,6 +2,13 @@ route: enabled: false +# CI: skip dynamic plugin downloads to speed up tests. +global: + dynamic: + includes: [] + lightspeed: + plugins: [] + upstream: postgresql: primary: diff --git a/charts/backstage/ci/with-custom-image-for-test-pod-values.yaml b/charts/backstage/ci/with-custom-image-for-test-pod-values.yaml index 121bb215..6e511c23 100644 --- a/charts/backstage/ci/with-custom-image-for-test-pod-values.yaml +++ b/charts/backstage/ci/with-custom-image-for-test-pod-values.yaml @@ -1,6 +1,14 @@ # Workaround for kind cluster in CI which has no Routes and no PVCs route: enabled: false + +# CI: skip dynamic plugin downloads to speed up tests. +global: + dynamic: + includes: [] + lightspeed: + plugins: [] + upstream: postgresql: primary: diff --git a/charts/backstage/ci/with-lightspeed-disabled-values.yaml b/charts/backstage/ci/with-lightspeed-disabled-values.yaml index d12c21e2..7dfc0a1e 100644 --- a/charts/backstage/ci/with-lightspeed-disabled-values.yaml +++ b/charts/backstage/ci/with-lightspeed-disabled-values.yaml @@ -3,8 +3,12 @@ route: enabled: false global: + # CI: skip dynamic plugin downloads to speed up tests. + dynamic: + includes: [] lightspeed: enabled: false + plugins: [] upstream: postgresql: diff --git a/charts/backstage/ci/with-lightspeed-service-host.yaml b/charts/backstage/ci/with-lightspeed-service-host.yaml index 0fceacee..5ba5007b 100644 --- a/charts/backstage/ci/with-lightspeed-service-host.yaml +++ b/charts/backstage/ci/with-lightspeed-service-host.yaml @@ -3,7 +3,12 @@ route: enabled: false global: + # CI: skip dynamic plugin downloads to speed up tests. + dynamic: + includes: [] + # FIXME(RHIDP-15458): remove plugins override once next catalog index is stable with correct lightspeed refs in the DPDY lightspeed: + plugins: [] sidecar: env: - name: SERVICE_HOST diff --git a/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml b/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml index 4f78749d..0e598fdc 100644 --- a/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml +++ b/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml @@ -9,15 +9,20 @@ upstream: global: dynamic: + # CI: skip dynamic plugin downloads to speed up tests. + includes: [] plugins: # Enable additional plugins, which should be merged with the Orchestrator plugins - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic enabled: true - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import enabled: true + lightspeed: + plugins: [] orchestrator: enabled: true + plugins: [] test: injectTestNpmrcSecret: true diff --git a/charts/backstage/ci/with-orchestrator-values.yaml b/charts/backstage/ci/with-orchestrator-values.yaml index a6732019..4c2b623d 100644 --- a/charts/backstage/ci/with-orchestrator-values.yaml +++ b/charts/backstage/ci/with-orchestrator-values.yaml @@ -9,12 +9,17 @@ upstream: global: dynamic: + # CI: skip dynamic plugin downloads to speed up tests. + includes: [] plugins: # Enable additional plugins, which should be merged with the Orchestrator plugins - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic enabled: true - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import enabled: true + lightspeed: + plugins: [] orchestrator: enabled: true + plugins: [] diff --git a/charts/backstage/ci/with-test-pod-disabled-values.yaml b/charts/backstage/ci/with-test-pod-disabled-values.yaml index 4a4257cb..c3e9ec89 100644 --- a/charts/backstage/ci/with-test-pod-disabled-values.yaml +++ b/charts/backstage/ci/with-test-pod-disabled-values.yaml @@ -1,6 +1,14 @@ # Workaround for kind cluster in CI which has no Routes and no PVCs route: enabled: false + +# CI: skip dynamic plugin downloads to speed up tests. +global: + dynamic: + includes: [] + lightspeed: + plugins: [] + upstream: postgresql: primary: diff --git a/charts/backstage/values.schema.json b/charts/backstage/values.schema.json index 35372eec..49d028a5 100644 --- a/charts/backstage/values.schema.json +++ b/charts/backstage/values.schema.json @@ -82,7 +82,7 @@ "type": "string" }, "tag": { - "default": "1.10", + "default": "next", "title": "Catalog index image tag", "type": "string" } diff --git a/charts/backstage/values.schema.tmpl.json b/charts/backstage/values.schema.tmpl.json index 32aed84f..7466ebef 100644 --- a/charts/backstage/values.schema.tmpl.json +++ b/charts/backstage/values.schema.tmpl.json @@ -127,7 +127,7 @@ "tag": { "title": "Catalog index image tag", "type": "string", - "default": "1.9" + "default": "next" } } }, diff --git a/charts/backstage/values.yaml b/charts/backstage/values.yaml index e57eced3..89b994cb 100644 --- a/charts/backstage/values.yaml +++ b/charts/backstage/values.yaml @@ -34,7 +34,7 @@ global: image: registry: quay.io repository: rhdh/plugin-catalog-index - tag: "1.10" + tag: "next" # -- Extra catalog index images for additional plugin discovery in the Extensions UI. # Each item must include `registry`, `repository`, and `tag` fields; `name` is optional. # Only catalog entities are extracted from extra images (no `dynamic-plugins.default.yaml` handling). From 57430e389ef8792d3f303c8e1ff21fb0015b260b Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Tue, 21 Jul 2026 08:48:26 +0200 Subject: [PATCH 02/10] chore: bump chart version --- charts/backstage/Chart.yaml | 2 +- charts/backstage/README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/charts/backstage/Chart.yaml b/charts/backstage/Chart.yaml index 664bc0f9..fc43ddcf 100644 --- a/charts/backstage/Chart.yaml +++ b/charts/backstage/Chart.yaml @@ -47,4 +47,4 @@ sources: [] # Versions are expected to follow Semantic Versioning (https://semver.org/) # Note that when this chart is published to https://github.com/openshift-helm-charts/charts # it will follow the RHDH versioning 1.y.z -version: 6.3.0 +version: 7.0.0 diff --git a/charts/backstage/README.md b/charts/backstage/README.md index 52bdf466..33cb0c19 100644 --- a/charts/backstage/README.md +++ b/charts/backstage/README.md @@ -1,7 +1,7 @@ # RHDH Backstage Helm Chart for OpenShift -![Version: 6.3.0](https://img.shields.io/badge/Version-6.3.0-informational?style=flat-square) +![Version: 7.0.0](https://img.shields.io/badge/Version-7.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) A Helm chart for deploying Red Hat Developer Hub, which is a Red Hat supported version of Backstage. @@ -29,7 +29,7 @@ For the **Generally Available** version of this chart, see: helm repo add bitnami https://charts.bitnami.com/bitnami helm repo add redhat-developer https://redhat-developer.github.io/rhdh-chart -helm install my-backstage redhat-developer/backstage --version 6.3.0 +helm install my-backstage redhat-developer/backstage --version 7.0.0 ``` ## Introduction From 53335acf398e900b6f907bf28e2dcfab28edc9eb Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Tue, 21 Jul 2026 08:53:07 +0200 Subject: [PATCH 03/10] fix(ci): enforce HTTPS-only redirects when downloading OLM installer Add --proto =https to the curl command so redirects cannot downgrade to plain HTTP. Assisted-by: Claude --- .github/actions/test-charts/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/test-charts/action.yml b/.github/actions/test-charts/action.yml index 8654ac3b..5d183cb3 100644 --- a/.github/actions/test-charts/action.yml +++ b/.github/actions/test-charts/action.yml @@ -152,7 +152,7 @@ runs: env: OLM_VERSION: "v0.31.0" run: | - curl -L "https://github.com/operator-framework/operator-lifecycle-manager/releases/download/${OLM_VERSION}/install.sh" -o install-olm.sh + curl --proto =https -L "https://github.com/operator-framework/operator-lifecycle-manager/releases/download/${OLM_VERSION}/install.sh" -o install-olm.sh chmod +x install-olm.sh ./install-olm.sh "${OLM_VERSION}" From 096bbd6dddd19b12971e18da5ad49015c50f5fa4 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Tue, 21 Jul 2026 08:59:35 +0200 Subject: [PATCH 04/10] fix(ci): use default backstage image from values.yaml in PR tests Stop overriding the backstage image repository and tag in the PR test workflow. The chart defaults from values.yaml are used instead. Assisted-by: Claude --- .github/workflows/test.yaml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index c6b3a3f9..bf3d5088 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -69,10 +69,6 @@ jobs: fail-fast: false matrix: chart: ${{ fromJson(needs.discover-charts.outputs.charts) }} - env: - RHDH_IMAGE_REPOSITORY: ${{ vars.RHDH_IMAGE_REPOSITORY || 'rhdh/rhdh-hub-rhel9' }} - RHDH_IMAGE_TAG: ${{ vars.RHDH_IMAGE_TAG || 'latest' }} - steps: - name: Checkout uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 @@ -85,8 +81,6 @@ jobs: target_branch: ${{ github.event.pull_request.base.ref }} chart: charts/${{ matrix.chart }} monitoring_heartbeat: ${{ vars.TEST_MONITORING_HEARTBEAT_ENABLED || 'false' }} - # The RHDH image tag is already pinned to a specific version for the 'release-1.y' branches. - extra_helm_args: ${{ matrix.chart == 'backstage' && github.event.pull_request.base.ref == 'main' && format('--set upstream.backstage.image.repository={0} --set upstream.backstage.image.tag={1}', env.RHDH_IMAGE_REPOSITORY, env.RHDH_IMAGE_TAG) || '' }} # Aligning job name with the OpenShift CI config: https://github.com/openshift/release/blob/master/core-services/prow/02_config/redhat-developer/rhdh-chart/_prowconfig.yaml#L18 status: From a63edb3e7ebd2514b843c6f4a1547c1968e07602 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Tue, 21 Jul 2026 09:23:37 +0200 Subject: [PATCH 05/10] ci(backstage): add helm template sanity check with full-plugins override Run helm template for each CI values file with the default plugin configuration restored on top, before creating the KinD cluster. This catches template rendering regressions in PR checks without the cost of a full install. Assisted-by: Claude --- .github/actions/test-charts/action.yml | 20 ++++++++++++++++++++ .github/workflows/test.yaml | 7 +++++++ 2 files changed, 27 insertions(+) diff --git a/.github/actions/test-charts/action.yml b/.github/actions/test-charts/action.yml index 5d183cb3..b23c400f 100644 --- a/.github/actions/test-charts/action.yml +++ b/.github/actions/test-charts/action.yml @@ -21,6 +21,10 @@ inputs: description: 'Extra arguments to pass to helm via ct install --helm-extra-args (e.g., --values file.yaml)' required: false default: '' + helm_template_values_file: + description: 'Extra values file for a helm-template sanity check (renders each CI scenario with these values layered on top, but does not install)' + required: false + default: '' monitoring_heartbeat: description: 'Enable background cluster monitoring (pod status + events every 30s) during chart tests' required: false @@ -89,6 +93,22 @@ runs: helm repo add bitnami https://charts.bitnami.com/bitnami helm repo update + - name: Helm template sanity check (full-plugins override) + if: steps.list-changed.outputs.changed == 'true' && inputs.helm_template_values_file != '' + shell: bash + env: + INPUT_CHART: ${{ inputs.chart }} + VALUES_FILE: ${{ inputs.helm_template_values_file }} + run: | + helm dependency build "$INPUT_CHART" + for ci_values in "$INPUT_CHART"/ci/*-values.yaml "$INPUT_CHART"/ci/*.yaml; do + [[ -f "$ci_values" ]] || continue + echo "==> helm template: $(basename "$ci_values") + $(basename "$VALUES_FILE")" + output=$(helm template test-release "$INPUT_CHART" \ + --values "$ci_values" \ + --values "$VALUES_FILE" 2>&1) || { echo "$output"; exit 1; } + done + - name: Generate KinD Config if: steps.list-changed.outputs.changed == 'true' shell: bash diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index bf3d5088..371861ad 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -75,12 +75,19 @@ jobs: with: fetch-depth: 0 + - name: Generate full-plugins values for template sanity check + if: matrix.chart == 'backstage' + run: | + yq e '{"global": {"dynamic": {"includes": .global.dynamic.includes}, "lightspeed": {"plugins": .global.lightspeed.plugins}}, "orchestrator": {"plugins": .orchestrator.plugins}}' \ + charts/backstage/values.yaml > /tmp/backstage-full-plugins-values.yaml + - name: Test charts uses: ./.github/actions/test-charts with: target_branch: ${{ github.event.pull_request.base.ref }} chart: charts/${{ matrix.chart }} monitoring_heartbeat: ${{ vars.TEST_MONITORING_HEARTBEAT_ENABLED || 'false' }} + helm_template_values_file: ${{ matrix.chart == 'backstage' && '/tmp/backstage-full-plugins-values.yaml' || '' }} # Aligning job name with the OpenShift CI config: https://github.com/openshift/release/blob/master/core-services/prow/02_config/redhat-developer/rhdh-chart/_prowconfig.yaml#L18 status: From fb9900e18cde75911d28264fadebb9bbaa616cb7 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Wed, 22 Jul 2026 00:30:54 +0200 Subject: [PATCH 06/10] fix(ci): replace incompatible bulk-import plugins with compatible ones The bulk-import plugins are incompatible with the current Backstage version. Replace them with scaffolder-relation-processor and tech-radar from the rhdh-plugin-export-overlays OCI registry, which are both compatible (bs_1.52.0) and require no extra configuration. Assisted-by: Claude --- .../with-orchestrator-and-dynamic-plugins-npmrc-values.yaml | 4 ++-- charts/backstage/ci/with-orchestrator-values.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml b/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml index 0e598fdc..782654ea 100644 --- a/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml +++ b/charts/backstage/ci/with-orchestrator-and-dynamic-plugins-npmrc-values.yaml @@ -13,9 +13,9 @@ global: includes: [] plugins: # Enable additional plugins, which should be merged with the Orchestrator plugins - - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic + - package: oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-community-plugin-catalog-backend-module-scaffolder-relation-processor:bs_1.52.0__2.15.0 enabled: true - - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import + - package: oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-community-plugin-tech-radar:bs_1.52.0__1.20.0 enabled: true lightspeed: plugins: [] diff --git a/charts/backstage/ci/with-orchestrator-values.yaml b/charts/backstage/ci/with-orchestrator-values.yaml index 4c2b623d..5b932df7 100644 --- a/charts/backstage/ci/with-orchestrator-values.yaml +++ b/charts/backstage/ci/with-orchestrator-values.yaml @@ -13,9 +13,9 @@ global: includes: [] plugins: # Enable additional plugins, which should be merged with the Orchestrator plugins - - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import-backend-dynamic + - package: oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-community-plugin-catalog-backend-module-scaffolder-relation-processor:bs_1.52.0__2.15.0 enabled: true - - package: ./dynamic-plugins/dist/red-hat-developer-hub-backstage-plugin-bulk-import + - package: oci://ghcr.io/redhat-developer/rhdh-plugin-export-overlays/backstage-community-plugin-tech-radar:bs_1.52.0__1.20.0 enabled: true lightspeed: plugins: [] From 2369caaf61241915bfd74206483c6016b1230133 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Wed, 22 Jul 2026 00:37:48 +0200 Subject: [PATCH 07/10] fix(ci): rename lightspeed CI file to match *-values.yaml convention Rename with-lightspeed-service-host.yaml to with-lightspeed-service-host-values.yaml so it matches the *-values.yaml pattern used by ct and the helm template sanity check. Also fix the glob to use *-values.yaml only. Assisted-by: Claude --- .github/actions/test-charts/action.yml | 2 +- ...rvice-host.yaml => with-lightspeed-service-host-values.yaml} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename charts/backstage/ci/{with-lightspeed-service-host.yaml => with-lightspeed-service-host-values.yaml} (100%) diff --git a/.github/actions/test-charts/action.yml b/.github/actions/test-charts/action.yml index b23c400f..20b4f491 100644 --- a/.github/actions/test-charts/action.yml +++ b/.github/actions/test-charts/action.yml @@ -101,7 +101,7 @@ runs: VALUES_FILE: ${{ inputs.helm_template_values_file }} run: | helm dependency build "$INPUT_CHART" - for ci_values in "$INPUT_CHART"/ci/*-values.yaml "$INPUT_CHART"/ci/*.yaml; do + for ci_values in "$INPUT_CHART"/ci/*-values.yaml; do [[ -f "$ci_values" ]] || continue echo "==> helm template: $(basename "$ci_values") + $(basename "$VALUES_FILE")" output=$(helm template test-release "$INPUT_CHART" \ diff --git a/charts/backstage/ci/with-lightspeed-service-host.yaml b/charts/backstage/ci/with-lightspeed-service-host-values.yaml similarity index 100% rename from charts/backstage/ci/with-lightspeed-service-host.yaml rename to charts/backstage/ci/with-lightspeed-service-host-values.yaml From 3c61fa9f11c34b8ddb534035ae51bcf3bd12bf64 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Wed, 22 Jul 2026 01:12:48 +0200 Subject: [PATCH 08/10] ci: skip ct upgrade test on major chart version bumps ct's --upgrade flag runs a same-version self-upgrade test (helm install + helm upgrade) for every CI values file, even when the cross-version upgrade is already skipped due to a major version bump. This doubles test time without meaningful coverage. Conditionally omit --upgrade when a major version bump is detected vs. the target branch. --- .github/actions/test-charts/action.yml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/actions/test-charts/action.yml b/.github/actions/test-charts/action.yml index 20b4f491..a70e0027 100644 --- a/.github/actions/test-charts/action.yml +++ b/.github/actions/test-charts/action.yml @@ -234,10 +234,22 @@ runs: CT_ARGS=( --debug --config ct-install.yaml - --upgrade --target-branch "$INPUT_TARGET_BRANCH" --helm-extra-set-args="${EXTRA_ARGS[*]}" ) + if [[ -n "$INPUT_CHART" ]]; then + old_version=$(git show "origin/$INPUT_TARGET_BRANCH:$INPUT_CHART/Chart.yaml" 2>/dev/null | yq '.version' 2>/dev/null || echo "0.0.0") + new_version=$(yq '.version' "$INPUT_CHART/Chart.yaml") + old_major=${old_version%%.*} + new_major=${new_version%%.*} + if [[ "$old_major" == "$new_major" ]]; then + CT_ARGS+=(--upgrade) + else + echo "Skipping --upgrade: major version bump detected ($old_version -> $new_version)" + fi + else + CT_ARGS+=(--upgrade) + fi if [[ -n "$INPUT_HELM_EXTRA_ARGS" ]]; then CT_ARGS+=(--helm-extra-args="$INPUT_HELM_EXTRA_ARGS") fi From f64cc44858464e43a742c1cb23c41b2e57428bb5 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Wed, 22 Jul 2026 01:13:45 +0200 Subject: [PATCH 09/10] ci: only pass --debug to ct when GH Actions debug logging is enabled --- .github/actions/test-charts/action.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/actions/test-charts/action.yml b/.github/actions/test-charts/action.yml index a70e0027..881a3f7f 100644 --- a/.github/actions/test-charts/action.yml +++ b/.github/actions/test-charts/action.yml @@ -232,7 +232,6 @@ runs: EXTRA_ARGS+=("${ADDITIONAL_ARGS[@]}") fi CT_ARGS=( - --debug --config ct-install.yaml --target-branch "$INPUT_TARGET_BRANCH" --helm-extra-set-args="${EXTRA_ARGS[*]}" @@ -250,6 +249,9 @@ runs: else CT_ARGS+=(--upgrade) fi + if [[ "$RUNNER_DEBUG" == "1" ]]; then + CT_ARGS+=(--debug) + fi if [[ -n "$INPUT_HELM_EXTRA_ARGS" ]]; then CT_ARGS+=(--helm-extra-args="$INPUT_HELM_EXTRA_ARGS") fi From 550ce3911ab933afaf64f571e51add3b9684f608 Mon Sep 17 00:00:00 2001 From: Armel Soro Date: Wed, 22 Jul 2026 01:32:25 +0200 Subject: [PATCH 10/10] ci: also skip ct --upgrade when chart version is unchanged --- .github/actions/test-charts/action.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/actions/test-charts/action.yml b/.github/actions/test-charts/action.yml index 881a3f7f..b573527b 100644 --- a/.github/actions/test-charts/action.yml +++ b/.github/actions/test-charts/action.yml @@ -241,10 +241,12 @@ runs: new_version=$(yq '.version' "$INPUT_CHART/Chart.yaml") old_major=${old_version%%.*} new_major=${new_version%%.*} - if [[ "$old_major" == "$new_major" ]]; then - CT_ARGS+=(--upgrade) - else + if [[ "$old_version" == "$new_version" ]]; then + echo "Skipping --upgrade: chart version unchanged ($old_version)" + elif [[ "$old_major" != "$new_major" ]]; then echo "Skipping --upgrade: major version bump detected ($old_version -> $new_version)" + else + CT_ARGS+=(--upgrade) fi else CT_ARGS+=(--upgrade)