[quality] Helm chart: ingress.yaml is rendered by no helm-unittest suite and by neither kind install; serviceaccount/configmap/service and the apiUrl, extraEnv, image.tag, create=false arms are unasserted
维护者通常 2 天内回复
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 30/100
调研方向
Read the chart’s existing suites under charts/prow-github-app/tests/ and the templates they cover, then follow the cases listed in the issue for ingress_test.yaml and wiring_test.yaml. Run helm unittest charts/prow-github-app; done means the new cases assert the listed template arms and pass, with each case failing when its corresponding arm is removed.
由索引模型根据 Issue 内容生成。
描述
Finding
charts/prow-github-app (landed in #624, main@db0322e) ships a helm-unittest suite and a kind install in the chart CI job, but four templates and several value arms are exercised by neither:
| Template / arm | helm unittest (tests/*.yaml) |
kind install (ci/*.yaml) |
|---|---|---|
templates/ingress.yaml (whole file) |
no suite lists it | ingress.enabled is false in both ci/single-values.yaml and ci/ha-external-redis-values.yaml → renders nothing |
templates/serviceaccount.yaml |
no suite lists it | rendered with defaults only; serviceAccount.create: false, .name, .annotations arms never |
templates/configmap.yaml |
no suite lists it | rendered with defaults only; github.apiUrl arm (GITHUB_API_URL) never, prow.dryRun always false |
templates/service.yaml |
no suite lists it | rendered with defaults only |
_helpers.tpl extraEnv range, image.tag default-to-appVersion, fullnameOverride, serviceAccountName fallback to default |
not set by any suite | not set by any ci/ values file (image.tag=ci is always passed) |
schema_test.yaml lists templates: [deployment.yaml]; topology_test.yaml lists deployment.yaml, pdb.yaml, secret.yaml, cronjob.yaml. Nothing else is rendered under assertion.
The Ingress matters most: docs/github-app.md:79-81 is the documented way to expose the webhook (ingress.enabled=true, className=nginx, hosts[0].host, paths[0].path=/webhook, pathType=Exact), and its backend targets the Service by port name (port: { name: http }), a cross-template contract with service.yaml that nothing pins. The pathType | default "Prefix" fallback, tls, annotations and className arms are likewise never rendered.
Evidence
- Unit:
helm unittest charts/prow-github-app(plugin 1.2.1, helm 3.19) at db0322e — 2 suites, 15 tests pass; template lists as above. - End-to-end:
.github/workflows/test.ymlchartjob, run 40969205788 (job 123781385369, every stepsuccess) —ct lint --all, thenhelm installof the twoci/values files; neither enables the ingress or sets any of the arms above. helm template … --set ingress.enabled=true --set ingress.className=nginx --set 'ingress.hosts[0].host=…' --set 'ingress.hosts[0].paths[0].path=/webhook' --set 'ingress.hosts[0].paths[0].pathType=Exact'renders a validnetworking.k8s.io/v1Ingress, and every other arm above renders what its comment promises — so this is a test gap, not a defect.
Recommendation
Add helm-unittest suites under charts/prow-github-app/tests/ (the harness ct/helm unittest already run in CI, so no workflow change is needed):
-
ingress_test.yaml— disabled renders nothing; the documented/webhookExactinstall renders one rule whose backend is the chart fullname on port namehttpandingressClassName: nginx; a path withoutpathTypegetsPrefix;tlsandannotationspass through. -
wiring_test.yaml(serviceaccount / configmap / service / helpers) —service.yamlnames its porthttp(the ingress contract) and selects the selector labels;serviceAccount.create: falserenders no ServiceAccount and the pod usesdefault(orserviceAccount.namewhen set);serviceAccount.annotationspass through;github.apiUrladdsGITHUB_API_URLand empty omits it;prow.dryRun: truerenders"true";extraEnventries land in the container env; emptyimage.tagresolves toChart.AppVersion;fullnameOverridenames every resource.
Each case should fail when its template arm is removed (verified by editing the template and re-running helm unittest).
Priority
- Impact: high for the ingress (webhook entry point, covered by neither suite — coverage-gap priority 1); medium for the remaining arms (reached end to end with defaults only — priority 2)
- Effort: low
Filed by quality agent (hold-gated mode)
🐝 Hive Agent: quality | Instance: hosted-available-lke648397-260827-5q9t | SHA: db0322e
— hive: agent=quality backend=copilot model=claude-fable-5.1 copilot=1.0.88
- 主要语言
- TypeScript
- 星标
- 132
- 派生
- 24
- 平均合并
- 1 天 12 小时
- 30 天内合并 PR
- 229
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
cncf/prow-github-actions 的其他 Issue
-
[quality] worker.ts scheduled(), queue consumer and deferViaQueue run under no test (unit excludes the file; miniflare suite only drives fetch())可能已有人在做 @hivecommons-hive 于 1 天前认领。 未关闭agent/quality needs-kind stage/040-covered-by-pr testing
难度 3/5 1-2 天 新手友好度 35/100
cncf/prow-github-actions#629 · 1 条评论 ·
维护者通常 2 天内回复
-
agent/quality needs-human needs-kind stage/045-needs-decision testing
难度 4/5 3-5 天 新手友好度 30/100
cncf/prow-github-actions#594 · 4 条评论 ·
维护者通常 2 天内回复
-
hive/advisory kind/cleanup needs-human stage/045-needs-decision
难度 5/5 一周以上 新手友好度 15/100
cncf/prow-github-actions#170 · 5 条评论 ·
维护者通常 2 天内回复
查看 cncf/prow-github-actions 的全部 Issue
相似的 Issue
-
Replace discontinued crypto-js in the theme可能已有人在做 @aelmanaa 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 85/100
PaloAltoNetworks/docusaurus-openapi-docs#1689 ·
维护者通常 2 天内回复
-
难度 2/5 1-3 小时 新手友好度 70/100
solana-foundation/solana-web3.js#4015 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100
维护者通常 1 天内回复
-
documentation
难度 1/5 1-3 小时 新手友好度 90/100
ivopogace/opencode-courier#422 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
chapel-lang/chapel-vscode#158 ·
维护者通常 1 天内回复