The GitHub Actions job "Benchmarks" on texera.git/main has succeeded. Run started by GitHub user github-merge-queue[bot] (triggered by github-merge-queue[bot]).
Head commit for run: cbdbd7a45340bc98d5366694c41585fbf7a938f6 / Tanishq Gandhi <[email protected]> test(k8s): check every chart value a template reads is defined (#8474) ### What changes were proposed in this PR? Helm renders a missing value as an empty string rather than failing, so a typo in a template — or a template added without its values — installs cleanly and then misbehaves at runtime with nothing pointing at the cause. `bin/k8s/tests/test_helm_values.sh` collects every value the chart templates read and fails naming any that `values.yaml` does not define. Files only: no helm, no cluster, about a second. ``` PASS: 151 template value reference(s) checked across 53 file(s); 4 exempt ``` 147 of the 151 references must resolve. The 4 exempt ones are the `*.service.nodePort` values, read only behind an `if eq .Values....type "NodePort"` guard; each entry in `ALLOWED_ABSENT` has to keep earning its place, so the check also fails if no template reads it any more or if `values.yaml` has started defining it. What it reads: - `.Values.a.b` and `index .Values "a" "b"`, as key segments rather than dotted strings, so a key containing a dot survives intact. - `$p := .Values.a.b`, so `$p.key` is checked too — both persistence templates alias a subtree this way. - `with .Values.x` and `include "h" .Values.x` are rejected instead: they turn the keys read inside into bare `.field`, which no single file can resolve. - Every file under `templates/` that `.helmignore` does not drop, reading the chart's own file. An extension allowlist would skip `_helpers.tpl`. - Subchart values like any other. All 14 subchart-rooted references resolve here today. Nothing passes silently: a missing PyYAML fails rather than skips, and so does scanning zero template files. No workflow change — the `infra` job already runs every `test_*.sh` under `bin/`. PyYAML goes in `amber/dev-requirements.txt` because `values.yaml` has block scalars a hand-rolled parser would read as keys; test-only, so it never reaches `LICENSE-binary`. ### Any related issues, documentation, discussions? Closes #8473 Part of #8466 ### How was this PR tested? Run on the chart as it stands (output above, `exit=0`), then once per failure mode with the break introduced deliberately, to confirm each fails rather than just claiming to: a value renamed in `values.yaml`; a reference renamed in `_helpers.tpl`; `minio.gateway.hostname` renamed, subchart-rooted but chart-owned; a key reached only through `index .Values "a" "b"`; a typo behind an alias; `with .Values.x`, `with (.Values.x)` and `include "h" .Values.x`; an exemption no template reads, and one `values.yaml` now defines; a pattern added to `.helmignore`; `templates/` emptied; PyYAML unimportable. Confirmed to pass, too: a key literally named `tls.secretName`, so the dot does not split the path, plus `include "h" (dict ...)` and `range $k, $v := .Values.m`. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Claude Opus 5) Report URL: https://github.com/apache/texera/actions/runs/34522619725 With regards, GitHub Actions via GitBox
