test: headlamp test - #3478
Conversation
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces the Headlamp app into APL Core by vendoring/configuring the Helm chart, wiring it into Helmfile/defaults/core configuration, and adding a substantial Helm template “golden file” test harness plus CI coverage for the ci/src/add-app-helm-chart.ts helper.
Changes:
- Add and configure the Headlamp Helm chart (templates, values, chart metadata) plus extensive rendered-template fixtures/tests.
- Wire Headlamp into APL Core configuration (defaults, Helmfile release, namespaces/adminApps, integration fixtures, Headlamp values templates).
- Extend CI to run tests for
ci/src/*and add unit tests for Helmfile generation + stable semver resolution.
Reviewed changes
Copilot reviewed 130 out of 131 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| values/headlamp/headlamp.gotmpl | Sets Headlamp pod labels for platform auth/auth-policy integration. |
| values/headlamp/headlamp-raw.gotmpl | Adds raw Gateway API + Istio authn/z resources for Headlamp exposure. |
| tests/integration/monitoring-with-team.yaml | Adds Headlamp enable/disable flag to integration fixture. |
| tests/integration/minimal.yaml | Adds Headlamp enable/disable flag to integration fixture. |
| tests/integration/minimal-with-team.yaml | Adds Headlamp enable/disable flag to integration fixture. |
| tests/integration/full.yaml | Adds Headlamp enable/disable flag to integration fixture. |
| tests/fixtures/env/apps/headlamp.yaml | Adds Headlamp app fixture manifest for integration tests. |
| jest.config.ts | Expands Jest roots to include ci/src tests. |
| helmfile.d/snippets/defaults.yaml | Adds default apps.headlamp config scaffold. |
| helmfile.d/helmfile-92.headlamp.yaml.gotmpl | Adds Helmfile releases for Headlamp (+ artifacts/raw release). |
| core.yaml | Registers Headlamp namespace and adminApps entry (own host). |
| ci/src/add-app-helm-chart.test.ts | Adds unit tests for helmfile scaffolding + semver resolution behavior. |
| ci/package.json | Adds/adjusts CI scripts to run update/schema checks and CI tests. |
| charts/headlamp/tests/update-version.sh | Adds helper to refresh expected templates when versions change. |
| charts/headlamp/tests/test.sh | Adds golden-file Helm template test runner (diff-based). |
| charts/headlamp/tests/test_cases/volumes-added.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/topology-spread-constraints.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/topology-spread-constraints-custom-selector.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/tls-added.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/service-extra-ports.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/service-appprotocol.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/service-account-token.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/service-account-token-out-of-cluster.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/service-account-token-custom-token.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/security-context.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/readonly-root-filesystem.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/readonly-root-filesystem-plugins-only.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/readonly-root-filesystem-plugins-inherit.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/readonly-root-filesystem-custom-tmp.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/readonly-root-filesystem-custom-tmp-volume.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/pod-disruption.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/oidc-validator-overrides.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/oidc-pkce.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/oidc-external-secret.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/oidc-external-secret-with-scopes.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/oidc-directly.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/oidc-directly-env.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/oidc-create-secret.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/non-azure-oidc.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/namespace-override.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/namespace-override-oidc-create-secret.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/me-user-info-url.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/me-user-info-url-directly.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/ingress-multi-backend.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/httproute-enabled.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/host-users-override.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/host-aliases.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/extra-manifests.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/extra-args.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/disable-static-plugins.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/cluster-inventory.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/cluster-inventory-plugins.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/test_cases/azure-oidc-with-validators.yaml | Adds Headlamp chart values test case. |
| charts/headlamp/tests/readme.md | Documents how to run/update Headlamp chart template tests. |
| charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-relative-mount-path.yaml | Adds negative test case for cluster-inventory plugin validation. |
| charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-mount-mismatch.yaml | Adds negative test case for cluster-inventory plugin validation. |
| charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-invalid-name.yaml | Adds negative test case for cluster-inventory plugin validation. |
| charts/headlamp/tests/failing_test_cases/cluster-inventory-plugin-command-equals-mount-path.yaml | Adds negative test case for cluster-inventory plugin validation. |
| charts/headlamp/tests/failing_test_cases/cluster-inventory-empty-access-providers.yaml | Adds negative test case for required accessProvidersConfig. |
| charts/headlamp/tests/expected_templates/default.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/volumes-added.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/topology-spread-constraints.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/topology-spread-constraints-custom-selector.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/tls-added.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/service-extra-ports.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/service-appprotocol.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/service-account-token.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/service-account-token-out-of-cluster.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/service-account-token-custom-token.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/readonly-root-filesystem.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/readonly-root-filesystem-custom-tmp.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/readonly-root-filesystem-custom-tmp-volume.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/pod-disruption.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/oidc-validator-overrides.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/oidc-pkce.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/oidc-external-secret.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/oidc-external-secret-with-scopes.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/oidc-directly.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/oidc-directly-env.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/oidc-create-secret.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/non-azure-oidc.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/namespace-override.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/me-user-info-url.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/me-user-info-url-directly.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/httproute-enabled.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/host-users-override.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/host-aliases.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/extra-manifests.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/extra-args.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/disable-static-plugins.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/cluster-inventory.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/tests/expected_templates/azure-oidc-with-validators.yaml | Adds expected rendered output fixture for template tests. |
| charts/headlamp/templates/serviceaccount.yaml | Adds ServiceAccount template for Headlamp chart. |
| charts/headlamp/templates/service.yaml | Adds Service template for Headlamp chart. |
| charts/headlamp/templates/secret.yaml | Adds OIDC Secret template for Headlamp chart. |
| charts/headlamp/templates/pvc.yaml | Adds PVC template for Headlamp chart. |
| charts/headlamp/templates/plugin-configmap.yaml | Adds plugin manager ConfigMap template for Headlamp chart. |
| charts/headlamp/templates/pdb.yaml | Adds PodDisruptionBudget template for Headlamp chart. |
| charts/headlamp/templates/NOTES.txt | Adds Helm NOTES output for Headlamp chart. |
| charts/headlamp/templates/ingress.yaml | Adds Ingress template for Headlamp chart. |
| charts/headlamp/templates/httproute.yaml | Adds HTTPRoute template for Headlamp chart. |
| charts/headlamp/templates/extra-manifests.yaml | Adds extraManifests passthrough template for Headlamp chart. |
| charts/headlamp/templates/clusterrolebinding.yaml | Adds ClusterRoleBinding template for Headlamp chart. |
| charts/headlamp/templates/cluster-inventory-configmap.yaml | Adds cluster-inventory provider ConfigMap + validation logic. |
| charts/headlamp/templates/_helpers.tpl | Adds helper templates for naming/labels/tmp volume logic. |
| charts/headlamp/Chart.yaml | Adds Headlamp chart metadata (version/appVersion/etc.). |
| charts/headlamp/.helmignore | Adds Helm ignore rules for vendored chart packaging. |
| chart/chart-index/Chart.yaml | Adds Headlamp dependency to the chart index. |
| bin/dyff.sh | Improves dyff output for added/deleted files/directories (including content output). |
| AGENTS.md | Adds local agent workflow note about running bin/compare.sh for templating changes. |
| .vscode/settings.json | Adds terminal auto-approve entries for common repo commands. |
| .github/workflows/ci-helm-chart.yml | Switches to npm ci in ci/ and adds a step to run CI script tests. |
| .github/skills/apl-test-gotemplate-renders/SKILL.md | Adds skill doc describing bin/compare.sh workflow. |
| .github/skills/apl-add-app/SKILL.md | Adds skill doc for app-chart onboarding workflow. |
| .github/skills/apl-add-app-ingress/SKILL.md | Adds skill doc for configuring public exposure scaffolding. |
| .github/copilot-instructions.md | Updates contributor instructions (notably adds mandatory template diff reminder). |
| {{- range .Values.persistentVolumeClaim.accessModes}} | ||
| accessModes: | ||
| - {{ . }} | ||
| {{- end}} |
| - name: Install packages | ||
| run: | | ||
| cd ci/ | ||
| npm install | ||
| npm ci | ||
| - name: Run CI script tests | ||
| run: | | ||
| cd ci/ | ||
| npm run tests |
| headlamp: | ||
| enabled: false | ||
| _rawValues: {} |
| "update-helm-chart-deps": "src/update-helm-chart-deps.mjs", | ||
| "check-schema-versions": "src/check-schema-versions.mjs", | ||
| "tests": "npm --prefix .. run test:ts -- ci/src", |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 130 out of 131 changed files in this pull request and generated 1 comment.
Suppressed comments (4)
ci/package.json:38
- The CI scripts are zx programs (see shebangs in ci/src/*.mjs), but the npm scripts invoke them as bare paths and one of them points to a non-existent filename (check-schema-versions.mjs). This will fail unless the file is executable and named exactly as referenced. Use
zxexplicitly and reference the correct file name.
charts/headlamp/templates/pvc.yaml:18 accessModes:is currently emitted once per entry because it is inside therange, which will generate duplicate YAML keys when more than one access mode is set (invalid manifest). EmitaccessModesonce and range only the list items.
{{- range .Values.persistentVolumeClaim.accessModes}}
accessModes:
- {{ . }}
{{- end}}
helmfile.d/snippets/defaults.yaml:269
- A new
apps.headlampdefault is introduced here, but there is no corresponding Headlamp entry invalues-schema.yaml. This repo expects all user-configurable app values to be present in the schema (used byvalidate-values), so adding at leastenabled+_rawValuesto the schema is needed to keep validation consistent.
charts/headlamp/templates/service.yaml:19 externalTrafficPolicyis always rendered for NodePort/LoadBalancer, butservice.externalTrafficPolicyis not defined in values.yaml. This can render as an empty/invalid value (and even if set to "", Kubernetes will reject it). Default it to a valid value (typically "Cluster") when unset.
{{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }}
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }}
{{- end }}
| data: | ||
| plugin.yml: |{{ .Values.pluginsManager.configContent | nindent 4 }} |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 130 out of 131 changed files in this pull request and generated 1 comment.
Suppressed comments (3)
charts/headlamp/templates/pvc.yaml:18
- This template renders
accessModes:inside arange, which produces repeatedaccessModeskeys (one per mode) and results in invalid PVC YAML when multiple access modes are provided. RenderaccessModesonce and iterate only the list items.
{{- range .Values.persistentVolumeClaim.accessModes}}
accessModes:
- {{ . }}
{{- end}}
ci/package.json:39
- This script points to
src/check-schema-versions.mjs, but that file doesn't exist inci/src(the existing script issrc/check-schema-version.mjs). This will makenpm run check-schema-versionsfail in CI.
helmfile.d/snippets/defaults.yaml:269 apps.headlampis added to defaults, butvalues-schema.yamlhas noheadlampdefinition (searching for "headlamp" returns no matches). Ifnpm run validate-valuesvalidates the merged values against the schema, this will fail until the schema is extended with.definitions.apps.properties.headlamp(at leastenabled+_rawValues).
| {{- if (or (eq .Values.service.type "LoadBalancer") (eq .Values.service.type "NodePort")) }} | ||
| externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy | quote }} | ||
| {{- end }} |
📌 Summary
🔍 Reviewer Notes
🧹 Checklist