refactor: replace Dockerfile.e2e with ConfigMap volume mount for E2E plugin loading
Delete custom Docker image approach per board directive. Plugin is now loaded into stock Headlamp via a ConfigMap volume mount: - Delete Dockerfile.e2e - deploy-e2e-headlamp.sh creates a ConfigMap from dist/ and mounts it into the stock ghcr.io/headlamp-k8s/headlamp image - Helm values use extraVolumes/extraVolumeMounts for the ConfigMap - No custom images, no PVCs, no kubectl exec/cp Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
+13
-12
@@ -6,15 +6,14 @@ Playwright-based smoke tests that validate the Polaris plugin against a live Hea
|
||||
|
||||
E2E tests run automatically in GitHub Actions on pushes to `main` and pull requests. The workflow (`.github/workflows/e2e.yaml`):
|
||||
|
||||
1. Builds the plugin
|
||||
2. Builds a custom Headlamp Docker image with the plugin pre-installed (`Dockerfile.e2e`)
|
||||
3. Pushes the image to `ghcr.io/privilegedescalation/headlamp-polaris-e2e:<sha>`
|
||||
4. Deploys a dedicated Headlamp instance in the `headlamp-e2e` namespace via Helm
|
||||
5. Generates a ServiceAccount token for test auth
|
||||
6. Runs Playwright tests against the E2E instance
|
||||
7. Tears down the E2E instance
|
||||
1. Builds the plugin (`npm run build`)
|
||||
2. Creates a ConfigMap from the built `dist/` output
|
||||
3. Deploys a stock Headlamp instance via Helm with the plugin mounted as a ConfigMap volume
|
||||
4. Generates a ServiceAccount token for test auth
|
||||
5. Runs Playwright tests against the E2E instance
|
||||
6. Tears down the E2E instance
|
||||
|
||||
This approach avoids PVCs, kubectl exec/cp, and deployment patching. The plugin is part of the container image.
|
||||
This approach uses the stock `ghcr.io/headlamp-k8s/headlamp` image with no custom Docker builds. The plugin is loaded via `HEADLAMP_PLUGINS_DIR` volume mount.
|
||||
|
||||
### Required GitHub Secrets
|
||||
|
||||
@@ -27,6 +26,8 @@ Configure these in GitHub repository settings (Settings → Secrets and variable
|
||||
|
||||
Token-based auth is auto-generated by the deploy script. OIDC secrets are only needed if testing against the shared Headlamp instance.
|
||||
|
||||
No `GHCR_TOKEN` or Docker registry secrets are needed — the stock Headlamp image is public.
|
||||
|
||||
## Running Locally
|
||||
|
||||
### Option 1: OIDC via Authentik (same as CI)
|
||||
@@ -261,13 +262,13 @@ Tests run automatically in GitHub Actions on pushes to `main` and pull requests.
|
||||
|
||||
The E2E workflow deploys a **dedicated Headlamp instance** for each test run:
|
||||
|
||||
1. Build plugin and Docker image (`Dockerfile.e2e`)
|
||||
2. Push image to `ghcr.io/privilegedescalation/headlamp-polaris-e2e:<sha>`
|
||||
3. Deploy via Helm in the `headlamp-e2e` namespace (`scripts/deploy-e2e-headlamp.sh`)
|
||||
1. Build plugin (`npm run build`)
|
||||
2. Create ConfigMap from `dist/` output (`scripts/deploy-e2e-headlamp.sh`)
|
||||
3. Deploy stock Headlamp via Helm with ConfigMap volume mount
|
||||
4. Run Playwright tests against the E2E instance
|
||||
5. Tear down (`scripts/teardown-e2e-headlamp.sh`)
|
||||
|
||||
No PVCs, no kubectl exec/cp, no patching of existing deployments. The plugin is baked into the Docker image.
|
||||
No custom Docker images, no PVCs, no kubectl exec/cp, no patching of existing deployments. The plugin is mounted from a ConfigMap into the stock Headlamp image.
|
||||
|
||||
### Cluster Prerequisites
|
||||
|
||||
|
||||
Reference in New Issue
Block a user