Nicholas Riegel
2cb2a48b98
fix: deploy E2E tests on ITSulu K8s cluster instead of external Runboat
Updated CI/CD pipeline to run E2E tests on the ITSulu K8s cluster
(itsulu-testing namespace) instead of using external Runboat service.
.gitlab-ci.yml Changes:
- Removed preview stage (no external Runboat dependency)
- Removed e2e_tests dependency on runboat_preview
- Updated e2e_tests job to run on K8s cluster:
* Uses bitnami/kubectl image for K8s access
* Configures kubectl with KUBE_CONFIG secret
* Creates ephemeral E2E test job on K8s
* initContainer: Creates test database from template
* container: Installs Odoo, addon, Playwright, runs pytest
* Waits for job completion and downloads report
* Reports available in GitLab artifacts
- Consolidated performance tests into unit_tests stage (same runner)
K8s Job Manifest (inline YAML):
- Namespace: itsulu-testing
- Init container: postgres:15-alpine for DB setup
- Test container: blog-publisher Docker image
- Volumes: emptyDir for test results
- TTL: 3600s (1 hour) for log retention
- Uses existing secrets: test-db-info, gitlab-docker-creds
e2e/conftest.py Changes:
- Updated docstring: "Runs on ITSulu K8s cluster"
- Changed RUNBOAT_TIMEOUT → K8S_TIMEOUT (300s)
- Updated wait_for_odoo() to mention K8s namespace in error
- Increased timeout: 180s → 300s (Odoo init + addon install)
Required CI/CD Variables (now reduced):
- KUBE_CONFIG: base64-encoded kubeconfig for itsulu-testing namespace
* Only one variable needed (replaces 3 Runboat variables)
* Must have permissions to create Jobs in itsulu-testing namespace
Prerequisites (K8s cluster):
- test-db-svc: PostgreSQL service in itsulu-testing namespace
- odoo_template: Pre-seeded database
- gitlab-docker-creds: Secret for image pull
- test-runner: ServiceAccount with Job create permissions
Benefits:
- No external service dependency
- Leverages existing ITSulu K8s infrastructure
- Full isolation per test run (ephemeral jobs)
- Persistent logs via TTL
- Cost-effective (uses existing cluster)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>