chore(e2e): add Cloud SQL runtime E2E with sidecar#5143
Conversation
|
Skipping CI for Draft Pull Request. |
|
The container image build workflow finished with status: |
|
/test e2e-ocp-helm-nightly |
|
@zdrapela: No presubmit jobs available for redhat-developer/rhdh@fix/e2e-readiness-and-localization-gates DetailsIn response to this:
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. |
|
/test e2e-ocp-helm-nightly |
|
/test e2e-ocp-helm-nightly |
Introduce an instance-readiness module so globalSetup distinguishes live instance URLs, auth router stubs, and runtime auto-deploy. Keep predicted runtime BASE_URL for Playwright config freeze, deploy before healthcheck when RUNTIME_AUTO_DEPLOY=true, drop localization smoke deps, restore e2e-tests lint-staged, and document /test job verification for agents. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Auth fixtures looked for yamls under rhdh-deployment/ after the folder split. Operator runtime was missing BACKEND_SECRET/auth.keys and the homepage plugin, leaving readiness at HTTP 503. Co-authored-by: Cursor <cursoragent@cursor.com>
prepareProvider updates ConfigMaps before createBackstageDeployment. Capturing reconcile baseline must tolerate a missing deployment. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
waitForRolloutStart treated a missing Deployment as a hard error, so auth prepareProvider failed immediately after applying the Backstage CR. Co-authored-by: Cursor <cursoragent@cursor.com>
Extract OperatorInstallProfile and DynamicPluginsProfile so auth and runtime stop drifting on flavours, includes, and BACKEND_SECRET. Stage auth deploy readiness as Available → HTTP → synced behind AuthInstanceDeployer. Co-authored-by: Cursor <cursoragent@cursor.com>
Stop dual BACKEND_SECRET injection, stage created→HTTP→synced so 503s surface before Available timeouts, always publish instance BASE_URL after runtime deploy, and align auth YAML fixtures with the install profile. Co-authored-by: Cursor <cursoragent@cursor.com>
Auth CI leaves BASE_URL empty so globalSetup no-ops, but rhdhContext ignored
describe-level baseURL and login goto("/") failed with invalid URL.
Co-authored-by: Cursor <cursoragent@cursor.com>
Centralize helm/operator URL naming, scope RUNTIME_AUTO_DEPLOY so it cannot stomp later projects, wait for authenticated global-header after OAuth, and kill port-forward process groups cleanly. Co-authored-by: Cursor <cursoragent@cursor.com>
Fix catalog sync log races, assert cookieMaxAge for refresh tokens, stop Azure redirect churn, tolerate failed-login alerts, and re-order OIDC+GitHub secondary auth around reconcile. Co-authored-by: Cursor <cursoragent@cursor.com>
Force pod restart and Deployment Ready after ConfigMap updates so resolvers, sessionDuration, and autologout actually load; switch cookie tests to the correct Backstage key and harden post-reconcile navigation/IdP waits. Co-authored-by: Cursor <cursoragent@cursor.com>
Default reconcile waits HTTP-only after mounted-config proof, shares cookie and label helpers, returns authenticated|error from login, and moves GitHub provider sign-out into the Settings POM. Co-authored-by: Cursor <cursoragent@cursor.com>
Playwright TimeoutError from request.get aborted expect.poll after one attempt, so post-reconcile HTTP readiness never used its full budget. Co-authored-by: Cursor <cursoragent@cursor.com>
The catalog identity-error regex had a ';u' typo that broke expected-error cases; also reuse healthy auth namespaces on worker restart and harden IdP popup/login outcome locality so nightlies stop burning the 2h budget. Co-authored-by: Cursor <cursoragent@cursor.com>
Worker-restart reuse was dying on AlreadyExists when recreating secrets, and sessionDuration cases inherited broken resolvers from earlier login tests. Co-authored-by: Cursor <cursoragent@cursor.com>
…tions Requiring role=main before loader settle burned the readiness budget on stuck progressbar paints; also retry ERR_ABORTED and enrich secret k8s errors. Co-authored-by: Cursor <cursoragent@cursor.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5143 +/- ##
==========================================
- Coverage 63.69% 59.96% -3.74%
==========================================
Files 123 111 -12
Lines 2424 2198 -226
Branches 572 547 -25
==========================================
- Hits 1544 1318 -226
- Misses 878 879 +1
+ Partials 2 1 -1
Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
|
/test e2e-ocp-helm-nightly |
Code Review by Qodo
Context used✅ Compliance rules (platform):
46 rules✅ Skills:
e2e-verify-fix, e2e-diagnose-and-fix✅ Cross-repo context Explored:
repo: redhat-developer/rhdh-chart (sha: e476f298) Explored:
repo: redhat-developer/rhdh-operator (sha: cde4968e) Not relevant to this PR:
redhat-developer/rhdh-plugins Not relevant to this PR:
redhat-developer/rhdh-local 1.
|
Drop chart-default POSTGRESQL_ADMIN_PASSWORD when disabling the subchart, wire POSTGRES_* app-config placeholders, and derive Deployment/Helm targets from the caller releaseName/namespace.
|
The container image build workflow finished with status: |
|
/test e2e-ocp-helm-nightly |
|
/test e2e-ocp-helm-nightly |
1 similar comment
|
/test e2e-ocp-helm-nightly |
Disable local Postgres then patch the Auth Proxy before waiting on Ready; helm --wait before the sidecar left pods unable to reach the DB.
|
/test e2e-ocp-helm-nightly |
Wire DynamicHomePage into Helm runtime values (matching operator), move external-DB configure into beforeAll so Verify can retry without redeploying, and assert Welcome in the config-map canary.
|
/test e2e-ocp-helm-nightly |
includes: [] made install-dynamic-plugins finish before chart Postgres was ready, so helm --wait timed out on 503. Keep DynamicHomePage on / but restore dynamic-plugins.default.yaml for Helm only.
|
/test e2e-ocp-helm-nightly |
|
The container image build workflow finished with status: |
|
/test e2e-ocp-operator-nightly |
|
/test e2e-ocp-helm-nightly |
|
|
@zdrapela: 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. |
|
PR needs rebase. 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. |



Description
Adds Helm and Operator runtime E2E coverage for Google Cloud SQL via the Cloud SQL Auth Proxy (native sidecar), matching the approach already used for RDS/Azure external DB suites.
Closes RHIDP-9140 and RHIDP-9141.
Why Auth Proxy (not direct
type: cloudsql)Backstage documents direct Cloud SQL via
@google-cloud/cloud-sql-connector, but that package is only an optional peer of@backstage/backend-defaultsand is not installed in shipped RHDH (unlike e.g.better-sqlite3). Helm/Operator docs today cover host/port TLS for RDS/Azure-style Postgres, not Cloud SQL connector config.Product support for a direct Cloud SQL connection is tracked as RHDHPLAN-155 (“Support direct connection to Google Cloud SQL”). Until that lands (and related plugin gaps such as RBAC/Casbin adapters are addressed), automating the verified Auth Proxy path is the feasible E2E approach.
What this PR does
verify-tls-config-with-external-cloudsql.spec.tsRuntimeHarnessAPIs to inject the proxy sidecar (Helm JSON patch / Operator CRdeployment.patch)CLOUDSQL_*+cloudsql-service-account.jsonfrom Vault in.ci/pipelines/env_variables.sh(no DB CA PEM)Stacked on #5083 (
fix/e2e-readiness-and-localization-gates).Which issue(s) does this PR fix
PR acceptance criteria
yarn test:unitine2e-tests)docs/e2e-tests/CI-medic-guide.md)How to test changes / Special notes to the reviewer
Vault keys (populated in CI):
CLOUDSQL_USER,CLOUDSQL_PASSWORD,CLOUDSQL_INSTANCE_1..4(project:region:instance),CLOUDSQL_1_HOST..4,cloudsql-service-account.json. DB cleanup uses public host TLS withrejectUnauthorized: false— do not usecloudsql-db-certificates.pemfor now.Local checks already run:
yarn fmt,yarn lint,yarn test:unitundere2e-tests.