Skip to content

feat: enable pluginDivisionMode schema tests for OCP Operator nightly jobs#4685

Open
Fortune-Ndlovu wants to merge 10 commits into
redhat-developer:mainfrom
Fortune-Ndlovu:RHIDP-13221-operator-add-test-for-plugin-division-mode-schema
Open

feat: enable pluginDivisionMode schema tests for OCP Operator nightly jobs#4685
Fortune-Ndlovu wants to merge 10 commits into
redhat-developer:mainfrom
Fortune-Ndlovu:RHIDP-13221-operator-add-test-for-plugin-division-mode-schema

Conversation

@Fortune-Ndlovu
Copy link
Copy Markdown
Member

Description

  • Enable pluginDivisionMode: schema E2E tests for OCP Operator deployments by wiring up the CI pipeline
    to deploy a real Crunchy PostgreSQL cluster and configure SCHEMA_MODE_* environment variables
  • Replace placeholder database secrets ("tmp"/"tmp") in the operator runtime namespace with real Crunchy
    PostgreSQL credentials via configure_external_postgres_db
  • Parameterize schema-mode-env.sh log messages to distinguish Helm vs Operator in CI output

Which issue(s) does this PR fix

PR acceptance criteria

Please make sure that the following steps are complete:

  • GitHub Actions are completed and successful
  • Unit Tests are updated and passing
  • E2E Tests are updated and passing
  • Documentation is updated if necessary (requirement for new features)
  • Add a screenshot if the change is UX/UI related

How to test changes / Special notes to the reviewer

@rhdh-qodo-merge
Copy link
Copy Markdown

rhdh-qodo-merge Bot commented Apr 23, 2026

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📎 Requirement gaps (0)

Context used

Grey Divider


Action required

1. Errexit breaks schema-mode skip 🐞 Bug ☼ Reliability
Description
configure_schema_mode_runtime_env runs an unguarded oc get pods inside command-substitution;
under the pipeline's set -o errexit this can terminate the entire job instead of returning 1 to
skip schema-mode tests. This becomes a real failure mode because ocp-operator.sh now invokes this
function during operator nightly runtime tests.
Code

.ci/pipelines/lib/schema-mode-env.sh[R73-76]

      postgres_service=$(oc get pods -n "${pdb}" \
        -l "postgres-operator.crunchydata.com/cluster=${crunchy_cluster},postgres-operator.crunchydata.com/data=postgres" \
        --field-selector=status.phase=Running \
        -o jsonpath='{.items[0].metadata.name}' 2> /dev/null)
Relevance

⭐⭐⭐ High

Repo often guards noncritical oc/kubectl failures under errexit (e.g., || true) to allow opt-in
skips.

PR-#4288
PR-#3835
PR-#2397

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The top-level CI entrypoint enables errexit, so a non-zero exit from the oc get pods command
substitution in configure_schema_mode_runtime_env will exit the script before the caller’s `if
...; then ... else ... fi can handle the failure as an opt-in skip. ocp-operator.sh` now calls
this function as part of operator runtime tests, making this crash path newly reachable in operator
nightly jobs.

.ci/pipelines/openshift-ci-tests.sh[1-6]
.ci/pipelines/jobs/ocp-operator.sh[87-114]
.ci/pipelines/lib/schema-mode-env.sh[60-85]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`configure_schema_mode_runtime_env` uses `postgres_service=$(oc get pods ...)` without `|| true` / error handling. With `set -o errexit` enabled by the CI entrypoint, any transient `oc` failure will abort the whole job instead of letting the function return non-zero (so schema-mode tests can skip).

### Issue Context
This function is now called from the operator nightly runtime test path, so the failure mode will affect operator jobs.

### Fix Focus Areas
- .ci/pipelines/lib/schema-mode-env.sh[60-85]

### Suggested fix
Wrap the `oc get pods` assignment in a non-fatal form, e.g.:
- `postgres_service=$(oc get pods ... 2>/dev/null || true)` and keep the existing empty-string check, **or**
- `if ! postgres_service=$(oc get pods ... 2>/dev/null); then postgres_service=""; fi`

Also consider applying the same pattern to any other command substitutions that are meant to be “best-effort/opt-in” under errexit.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Operator schema secret mismatch 🐞 Bug ≡ Correctness
Description
Operator schema-mode tests may not apply schema-mode credentials to the running Operator deployment
because the Playwright schema-mode setup always updates <release>-postgresql, while the Operator
runtime CR injects DB env vars from postgres-cred. Since the setup only adds missing env vars
(does not override existing ones), the Operator deployment can keep using postgres-cred values for
host/user/password, reducing test correctness/coverage or causing unexpected failures.
Code

.ci/pipelines/jobs/ocp-operator.sh[R105-112]

+  export INSTALL_METHOD=operator
+
+  # Configure schema-mode environment (opt-in: tests skip if env not configured)
+  if configure_schema_mode_runtime_env "${NAME_SPACE_RUNTIME}" "${RELEASE_NAME}" operator; then
+    log::info "Schema-mode environment configured successfully; schema-mode tests will run"
+  else
+    log::warn "Schema-mode environment not configured; schema-mode tests will skip (this is expected if PostgreSQL is not available)"
+  fi
Relevance

⭐⭐⭐ High

Team previously expanded schema-mode secret candidates to include postgres-cred; mismatch would
reduce coverage.

PR-#4288
PR-#2463
PR-#4649

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The operator runtime Backstage CR uses extraEnvs.secrets: postgres-cred to supply database env
vars. The schema-mode setup logic, however, updates a Helm-style secret name
${releaseName}-postgresql and only patches the Deployment when env vars are missing; it returns
early when vars already exist, meaning existing Operator-provided vars will not be redirected to the
schema-mode secret. Additionally, postgres-cred is explicitly created/populated by CI with
POSTGRES_HOST/USER/PASSWORD/..., making it likely these vars are already present and thus won’t be
overridden by schema-mode setup.

.ci/pipelines/jobs/ocp-operator.sh[103-112]
.ci/pipelines/resources/rhdh-operator/rhdh-start-runtime.yaml[27-43]
e2e-tests/playwright/e2e/plugin-division-mode-schema/schema-mode-setup.ts[46-176]
e2e-tests/playwright/e2e/plugin-division-mode-schema/schema-mode-setup.ts[178-214]
.ci/pipelines/utils.sh[202-226]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Schema-mode Playwright setup updates `${releaseName}-postgresql`, but the Operator deployment consumes DB env vars from `postgres-cred`. Because the setup only adds missing env vars (and does not override existing ones), Operator runs may continue using `postgres-cred` for key DB vars, making schema-mode operator coverage incorrect or flaky.

### Issue Context
This PR enables operator nightly schema-mode execution (`INSTALL_METHOD=operator` + schema-mode env auto-config). That makes this mismatch impactful for CI behavior.

### Fix Focus Areas
- e2e-tests/playwright/e2e/plugin-division-mode-schema/schema-mode-setup.ts[46-214]
- .ci/pipelines/resources/rhdh-operator/rhdh-start-runtime.yaml[27-43]

### Suggested fix options
**Option A (preferred):** In `SchemaModeTestSetup`, when `installMethod === "operator"`, update `postgres-cred` (using `POSTGRES_*` keys) instead of `${releaseName}-postgresql`, and ensure the deployment env vars point to `postgres-cred` (override if needed, not only add when missing).

**Option B:** Change the operator runtime CR to consume `${releaseName}-postgresql` instead of `postgres-cred` (so Helm and Operator converge on one secret name), and ensure CI creates/populates that secret consistently.

Either way, make sure the schema-mode user/password (`SCHEMA_MODE_DB_USER`/`SCHEMA_MODE_DB_PASSWORD`) are actually what the Operator deployment uses for DB connections during the test.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Previous review results

Review updated until commit 68dfd51

Results up to commit ec6a15d


🐞 Bugs (2) 📘 Rule violations (0) 📎 Requirement gaps (0)


Action required
1. Errexit breaks schema-mode skip 🐞 Bug ☼ Reliability
Description
configure_schema_mode_runtime_env runs an unguarded oc get pods inside command-substitution;
under the pipeline's set -o errexit this can terminate the entire job instead of returning 1 to
skip schema-mode tests. This becomes a real failure mode because ocp-operator.sh now invokes this
function during operator nightly runtime tests.
Code

.ci/pipelines/lib/schema-mode-env.sh[R73-76]

      postgres_service=$(oc get pods -n "${pdb}" \
        -l "postgres-operator.crunchydata.com/cluster=${crunchy_cluster},postgres-operator.crunchydata.com/data=postgres" \
        --field-selector=status.phase=Running \
        -o jsonpath='{.items[0].metadata.name}' 2> /dev/null)
Relevance

⭐⭐⭐ High

Repo often guards noncritical oc/kubectl failures under errexit (e.g., || true) to allow opt-in
skips.

PR-#4288
PR-#3835
PR-#2397

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The top-level CI entrypoint enables errexit, so a non-zero exit from the oc get pods command
substitution in configure_schema_mode_runtime_env will exit the script before the caller’s `if
...; then ... else ... fi can handle the failure as an opt-in skip. ocp-operator.sh` now calls
this function as part of operator runtime tests, making this crash path newly reachable in operator
nightly jobs.

.ci/pipelines/openshift-ci-tests.sh[1-6]
.ci/pipelines/jobs/ocp-operator.sh[87-114]
.ci/pipelines/lib/schema-mode-env.sh[60-85]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
`configure_schema_mode_runtime_env` uses `postgres_service=$(oc get pods ...)` without `|| true` / error handling. With `set -o errexit` enabled by the CI entrypoint, any transient `oc` failure will abort the whole job instead of letting the function return non-zero (so schema-mode tests can skip).

### Issue Context
This function is now called from the operator nightly runtime test path, so the failure mode will affect operator jobs.

### Fix Focus Areas
- .ci/pipelines/lib/schema-mode-env.sh[60-85]

### Suggested fix
Wrap the `oc get pods` assignment in a non-fatal form, e.g.:
- `postgres_service=$(oc get pods ... 2>/dev/null || true)` and keep the existing empty-string check, **or**
- `if ! postgres_service=$(oc get pods ... 2>/dev/null); then postgres_service=""; fi`

Also consider applying the same pattern to any other command substitutions that are meant to be “best-effort/opt-in” under errexit.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended
2. Operator schema secret mismatch 🐞 Bug ≡ Correctness
Description
Operator schema-mode tests may not apply schema-mode credentials to the running Operator deployment
because the Playwright schema-mode setup always updates <release>-postgresql, while the Operator
runtime CR injects DB env vars from postgres-cred. Since the setup only adds missing env vars
(does not override existing ones), the Operator deployment can keep using postgres-cred values for
host/user/password, reducing test correctness/coverage or causing unexpected failures.
Code

.ci/pipelines/jobs/ocp-operator.sh[R105-112]

+  export INSTALL_METHOD=operator
+
+  # Configure schema-mode environment (opt-in: tests skip if env not configured)
+  if configure_schema_mode_runtime_env "${NAME_SPACE_RUNTIME}" "${RELEASE_NAME}" operator; then
+    log::info "Schema-mode environment configured successfully; schema-mode tests will run"
+  else
+    log::warn "Schema-mode environment not configured; schema-mode tests will skip (this is expected if PostgreSQL is not available)"
+  fi
Relevance

⭐⭐⭐ High

Team previously expanded schema-mode secret candidates to include postgres-cred; mismatch would
reduce coverage.

PR-#4288
PR-#2463
PR-#4649

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The operator runtime Backstage CR uses extraEnvs.secrets: postgres-cred to supply database env
vars. The schema-mode setup logic, however, updates a Helm-style secret name
${releaseName}-postgresql and only patches the Deployment when env vars are missing; it returns
early when vars already exist, meaning existing Operator-provided vars will not be redirected to the
schema-mode secret. Additionally, postgres-cred is explicitly created/populated by CI with
POSTGRES_HOST/USER/PASSWORD/..., making it likely these vars are already present and thus won’t be
overridden by schema-mode setup.

.ci/pipelines/jobs/ocp-operator.sh[103-112]
.ci/pipelines/resources/rhdh-operator/rhdh-start-runtime.yaml[27-43]
e2e-tests/playwright/e2e/plugin-division-mode-schema/schema-mode-setup.ts[46-176]
e2e-tests/playwright/e2e/plugin-division-mode-schema/schema-mode-setup.ts[178-214]
.ci/pipelines/utils.sh[202-226]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Schema-mode Playwright setup updates `${releaseName}-postgresql`, but the Operator deployment consumes DB env vars from `postgres-cred`. Because the setup only adds missing env vars (and does not override existing ones), Operator runs may continue using `postgres-cred` for key DB vars, making schema-mode operator coverage incorrect or flaky.

### Issue Context
This PR enables operator nightly schema-mode execution (`INSTALL_METHOD=operator` + schema-mode env auto-config). That makes this mismatch impactful for CI behavior.

### Fix Focus Areas
- e2e-tests/playwright/e2e/plugin-division-mode-schema/schema-mode-setup.ts[46-214]
- .ci/pipelines/resources/rhdh-operator/rhdh-start-runtime.yaml[27-43]

### Suggested fix options
**Option A (preferred):** In `SchemaModeTestSetup`, when `installMethod === "operator"`, update `postgres-cred` (using `POSTGRES_*` keys) instead of `${releaseName}-postgresql`, and ensure the deployment env vars point to `postgres-cred` (override if needed, not only add when missing).

**Option B:** Change the operator runtime CR to consume `${releaseName}-postgresql` instead of `postgres-cred` (so Helm and Operator converge on one secret name), and ensure CI creates/populates that secret consistently.

Either way, make sure the schema-mode user/password (`SCHEMA_MODE_DB_USER`/`SCHEMA_MODE_DB_PASSWORD`) are actually what the Operator deployment uses for DB connections during the test.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Qodo Logo

@github-actions
Copy link
Copy Markdown
Contributor

The container image build workflow finished with status: cancelled.

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-helm-nightly

@rhdh-qodo-merge
Copy link
Copy Markdown

rhdh-qodo-merge Bot commented Apr 23, 2026

Review Summary by Qodo

Enable schema-mode E2E tests for OCP Operator deployments

✨ Enhancement 🧪 Tests

Grey Divider

Walkthroughs

Description
• Enable pluginDivisionMode schema E2E tests for OCP Operator nightly jobs
• Deploy real Crunchy PostgreSQL cluster and configure schema-mode environment variables
• Replace placeholder database secrets with real credentials via configure_external_postgres_db
• Parameterize schema-mode log messages to distinguish Helm vs Operator deployments
Diagram
flowchart LR
  A["OCP Operator Pipeline"] -->|"source schema-mode-env.sh"| B["Schema Mode Configuration"]
  C["External PostgreSQL<br/>Crunchy Cluster"] -->|"configure_external_postgres_db"| D["Real DB Credentials"]
  D -->|"patch postgres-cred secret"| E["Runtime Namespace"]
  B -->|"configure_schema_mode_runtime_env<br/>with install_method=operator"| F["Schema-Mode Tests"]
  E -->|"SCHEMA_MODE_* env vars"| F
Loading

Grey Divider

File Changes

1. .ci/pipelines/jobs/ocp-operator.sh ✨ Enhancement +24/-4

Wire up schema-mode tests for operator deployments

• Source schema-mode-env.sh library for schema-mode configuration
• Deploy external PostgreSQL (Crunchy) cluster in dedicated namespace
• Replace placeholder secrets with real credentials from Crunchy cluster
• Patch postgres-cred secret with RHDH_RUNTIME_URL for app configuration
• Call configure_schema_mode_runtime_env with install_method=operator parameter
• Add NAME_SPACE_POSTGRES_DB namespace variable for external database

.ci/pipelines/jobs/ocp-operator.sh


2. .ci/pipelines/lib/schema-mode-env.sh ✨ Enhancement +7/-6

Parameterize log messages with install method

• Add install_method parameter (defaults to 'helm') to distinguish deployment types
• Replace hardcoded 'helm' strings in log messages with parameterized ${install_method} variable
• Update all schema-mode log messages (info, warn) to include install method context

.ci/pipelines/lib/schema-mode-env.sh


3. e2e-tests/playwright/e2e/plugin-division-mode-schema/README.md 📝 Documentation +2/-2

Update documentation for operator schema-mode test support

• Update CI behavior documentation to reflect schema-mode tests now run on OCP Operator nightly jobs
• Remove reference to [RHDHBUGS-2608](https://redhat.atlassian.net/browse/RHDHBUGS-2608) tracking disabled operator runtime tests
• Clarify pipeline entrypoint includes both Helm and Operator job paths

e2e-tests/playwright/e2e/plugin-division-mode-schema/README.md


Grey Divider

Qodo Logo

@github-actions
Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@github-actions
Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-helm

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@github-actions
Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-helm-nightly

@github-actions
Copy link
Copy Markdown
Contributor

The container image build and publish workflows were skipped (either due to [skip-build] tag or no relevant changes with existing image).

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/review

@rhdh-qodo-merge
Copy link
Copy Markdown

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

RHIDP-13221 - Partially compliant

Compliant requirements:

  • Enable schema-mode tests for Operator-based OCP nightly jobs
  • Wire CI pipeline to use a real Crunchy PostgreSQL cluster for schema-mode tests
  • Configure SCHEMA_MODE_* environment variables for schema-mode tests (opt-in/skip behavior preserved)

Non-compliant requirements:

  • Add/enable E2E test coverage for pluginDivisionMode: schema for Operator-based OCP deployments (nightly CI context).

Requires further human verification:

  • Add/enable E2E test coverage for pluginDivisionMode: schema for Operator-based OCP deployments (nightly CI context).
  • Wire CI pipeline to deploy/consume a real PostgreSQL instance (Crunchy PostgreSQL) for schema-mode tests.
  • Configure the necessary SCHEMA_MODE_* environment variables so schema-mode tests can run (and skip when not configured).
⏱️ Estimated effort to review: 3 🔵🔵🔵⚪⚪
🧪 No relevant tests
🔒 Security concerns

Potential secret exposure:
configure_schema_mode_runtime_env exports database admin credentials into environment variables (SCHEMA_MODE_DB_ADMIN_PASSWORD). While this is common for CI, ensure downstream logging (e.g., Playwright debug output, set -x, or any env dumps) does not print these values. Additionally, oc patch secret ... -p "{...${runtime_url}...}" is safe, but verify no commands echo secret contents to logs.

⚡ Recommended focus areas for review

Possible Issue

The oc patch secret postgres-cred assumes the secret already exists in the runtime namespace. If configure_external_postgres_db fails, is delayed, or uses a different secret name, this patch will fail and may break the operator runtime flow. Consider validating existence (or creating it) before patching and/or failing fast with a clearer error.

# Add RHDH_RUNTIME_URL to postgres-cred (configure_external_postgres_db doesn't include it,
# but rds-app-config.yaml references it for app/backend baseUrl)
local runtime_url="https://backstage-${RELEASE_NAME}-${NAME_SPACE_RUNTIME}.${K8S_CLUSTER_ROUTER_BASE}"
oc patch secret postgres-cred -n "${NAME_SPACE_RUNTIME}" --type merge \
  -p "{\"stringData\":{\"RHDH_RUNTIME_URL\":\"${runtime_url}\"}}"

deploy_rhdh_operator "${NAME_SPACE_RUNTIME}" "${DIR}/resources/rhdh-operator/rhdh-start-runtime.yaml" "true"

export INSTALL_METHOD=operator

# Configure schema-mode environment (opt-in: tests skip if env not configured)
if configure_schema_mode_runtime_env "${NAME_SPACE_RUNTIME}" "${RELEASE_NAME}" operator; then
  log::info "Schema-mode environment configured successfully; schema-mode tests will run"
else
  log::warn "Schema-mode environment not configured; schema-mode tests will skip (this is expected if PostgreSQL is not available)"
fi
Naming/Config Risk

Hard-coded/default resource names appear to use postgress-external-db / postgress-external-db-primary (note spelling). If the actual namespace/service/cluster name differs (or is spelled postgres-*), schema-mode auto-configuration will silently opt out and tests will skip. Consider aligning defaults with the real Crunchy deployment naming and/or making the service name configurable via env.

local pdb="${NAME_SPACE_POSTGRES_DB:-postgress-external-db}"
local crunchy_cluster="${SCHEMA_MODE_CRUNCHY_CLUSTER_NAME:-postgress-external-db}"
if oc get svc postgress-external-db-primary -n "${pdb}" &> /dev/null; then
  forward_namespace="${pdb}"
  log::info "Schema-mode (${install_method}): no in-cluster Postgres Service in ${runtime_namespace}; using Crunchy cluster in ${pdb}"
  local crunchy_admin_secret="${crunchy_cluster}-pguser-janus-idp"
  if oc get secret "${crunchy_admin_secret}" -n "${pdb}" &> /dev/null; then
    admin_password=$(oc get secret "${crunchy_admin_secret}" -n "${pdb}" -o jsonpath='{.data.password}' 2> /dev/null | base64 -d || true)
  fi
  if [[ -z "${admin_password}" ]]; then
    log::warn "Schema-mode (${install_method}): could not read ${crunchy_admin_secret} password in ${pdb}; schema tests remain opt-in."
    return 1
  fi
  postgres_service=$(oc get pods -n "${pdb}" \
    -l "postgres-operator.crunchydata.com/cluster=${crunchy_cluster},postgres-operator.crunchydata.com/data=postgres" \
    --field-selector=status.phase=Running \
    -o jsonpath='{.items[0].metadata.name}' 2> /dev/null)
  if [[ -z "${postgres_service}" ]]; then
    log::warn "Schema-mode (${install_method}): no Running Postgres pod in ${pdb} for cluster ${crunchy_cluster}; schema tests remain opt-in."
    return 1
  fi
  forward_via_pod=1
else
  log::warn "Schema-mode (${install_method}): PostgreSQL service not found in ${runtime_namespace} and no postgress-external-db-primary in ${pdb}; schema tests remain opt-in."
  return 1
fi
CI Reliability

testing::run_tests ... || true will mask failures (including schema-mode tests) and could undermine the goal of “enable tests” in nightly. If the intent is to keep the pipeline green, consider limiting the ignore-failure behavior or ensuring schema-mode failures are surfaced in a dedicated step/report.

  testing::run_tests "${RELEASE_NAME}" "${NAME_SPACE_RUNTIME}" "${PW_PROJECT_SHOWCASE_RUNTIME}" "${runtime_url}" || true
}
📄 References
  1. No matching references available

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/agentic_review

@rhdh-qodo-merge
Copy link
Copy Markdown

rhdh-qodo-merge Bot commented Apr 27, 2026

Persistent review updated to latest commit 68dfd51

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-helm

@github-actions
Copy link
Copy Markdown
Contributor

The container image build and publish workflows were skipped (either due to [skip-build] tag or no relevant changes with existing image).

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/retest

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

1 similar comment
@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@github-actions
Copy link
Copy Markdown
Contributor

This PR is stale because it has been open 7 days with no activity. Remove stale label or comment or this will be closed in 21 days.

@github-actions github-actions Bot added the Stale label May 19, 2026
…ghtly

Enable pluginDivisionMode: schema E2E tests for OCP Operator deployments.
The tests previously skipped because schema-mode-setup.ts patched the
operator-managed Deployment spec to inject POSTGRES_* env vars, which the
operator reconciliation loop reverted — crashing the init container.

Fix: for operator deployments, update the existing postgres-cred secret
(already mounted via extraEnvs.secrets in the Backstage CR) instead of
creating a new secret and patching the Deployment. Skip
ensureDeploymentEnvVars() entirely for operator since env vars are
injected by the operator from the secret automatically.

CI pipeline changes:
- Wire up real Crunchy PostgreSQL via configure_external_postgres_db
- Configure SCHEMA_MODE_* env vars via configure_schema_mode_runtime_env
- Export INSTALL_METHOD=operator for correct deployment naming
- Fall back to placeholder secrets if Crunchy setup fails

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The merge with main reverted the configure_external_postgres_db block
in run_operator_runtime_config_change_tests(), leaving a dangling
postgres_ready reference (shellcheck SC2154). Restore the Crunchy setup
with fallback to placeholder secrets, split local declaration from
assignment to satisfy shellcheck, and use config::create_app_config_map
matching main's pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

@github-actions
Copy link
Copy Markdown
Contributor

The container image build and publish workflows were skipped (either due to [skip-build] tag or no relevant changes with existing image).

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

1 similar comment
@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

Fortune-Ndlovu and others added 2 commits May 19, 2026 16:17
PR redhat-developer#4795 (c2816d3) removed the floating-action-button and
global-header ConfigMap files and creation logic but left the
references in the Backstage CR specs. The operator fails to
reconcile because it cannot find these ConfigMaps, blocking all
operator nightly jobs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@github-actions
Copy link
Copy Markdown
Contributor

The container image build workflow finished with status: cancelled.

@github-actions
Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

@github-actions github-actions Bot removed the Stale label May 20, 2026
Fortune-Ndlovu and others added 2 commits May 20, 2026 14:33
…or deployment

The Backstage CR references dynamicPluginsConfigMapName: dynamic-plugins
but the ConfigMap was never created in the showcase-runtime namespace,
causing the operator reconciler to fail.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

@github-actions
Copy link
Copy Markdown
Contributor

The container image build and publish workflows were skipped (either due to [skip-build] tag or no relevant changes with existing image).

@github-actions
Copy link
Copy Markdown
Contributor

Image was built and published successfully. It is available at:

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

…ator

Use values-showcase-postgres.yaml (plugins: []) instead of the full
values_showcase.yaml to avoid the install-dynamic-plugins init container
hanging while downloading dozens of plugins. The runtime namespace only
needs default bundled plugins for schema-mode testing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

The container image build and publish workflows were skipped (either due to [skip-build] tag or no relevant changes with existing image).

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

The ephemeral volume controller can be slow to create PVCs on CI
clusters, causing the deployment restart to fail on the first attempt.
Add retry logic (up to 3 attempts with 30s delay) and increase the
beforeAll timeout to 15 minutes to accommodate retries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

The container image build and publish workflows were skipped (either due to [skip-build] tag or no relevant changes with existing image).

@sonarqubecloud
Copy link
Copy Markdown

@Fortune-Ndlovu
Copy link
Copy Markdown
Member Author

/test e2e-ocp-operator-nightly

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