cognis-digital/chartwright

GitHub: cognis-digital/chartwright

纯 Python 实现的 Helm chart 模板渲染、lint 和 values diff 工具,无需安装 Helm binary 即可在 CI、隔离环境等场景中操作 chart。

Stars: 0 | Forks: 0

# chartwright **Helm chart 模板渲染、lint 和 values diff —— 无需 Helm binary。** 渲染 chart 实际使用的模板指令,lint chart 结构,并对比 不同环境下的 values 文件,全部使用纯 Python 实现。 **Cognis Neural Suite** 的一部分。 ## 为什么使用 在 CI、air-gap(物理隔离)环境或快速的 pre-commit hook 中,你并不总是拥有(或想要)安装 Helm。chartwright 会读取标准的 Helm chart 布局 (`Chart.yaml`、`values.yaml`、`templates/`)并渲染大多数 chart 所依赖的 Go/Sprig 模板行为的实用子集 —— 无需 binary,无需 pip 安装。 ## 命令 ``` # 根据 chart 的 values 渲染其 templates。 python -m chartwright template ./mychart --release prod # 合并特定环境的 values override。 python -m chartwright template ./mychart --values values-prod.yaml # Lint 结构 + 平衡的 if/range/with blocks。 python -m chartwright lint ./mychart python -m chartwright lint ./mychart --fail-on warning # Diff 两个 values 文件(添加 / 删除 / 更改的 leaf keys)。 python -m chartwright diff values.yaml values-prod.yaml # 作为本地 MCP server 运行 (stdio JSON-RPC)。 python -m chartwright mcp ``` ## 支持的模板指令 - `{{ .Values.a.b }}`, `{{ .Chart.name }}`, `{{ .Release.Name }}` - pipelines:`{{ .Values.x | default "y" | quote | upper | lower | trim }}` - 条件判断:`{{- if .Values.flag }} … {{- else }} … {{- end }}` - 循环:`{{- range .Values.list }} … {{ . }} … {{- end }}` - 使用 `{{-` 和 `-}}` 进行空白字符修剪 ## chartwright 的独特之处 - **无 Helm 依赖。** 可以在安装 Helm 不切实际的环境中进行渲染和 lint。 - **内置 Values diff 功能。** 在 `values.yaml` 和生产环境覆盖配置发布之前发现它们之间的偏差 —— 扁平化、叶子节点级别、易于阅读。 - **MCP 原生**(`template` / `lint` / `diff`),并带有可选的 local-fleet AI hook(默认关闭),可为环境推荐 values 覆盖配置。 - **与 air-gap suite 配合使用:** 使用 chartwright 进行 lint 和渲染,使用 [oradeck](https://github.com/cognis-digital/oradeck) 镜像 image,并使用 [airlock](https://github.com/cognis-digital/airlock) 打包应用程序。 ## 测试 ``` python -m pytest -q # or: python -m unittest discover -s tests ``` ## 互操作性 `chartwright` 可与包含 300+ 工具的 Cognis suite 组合使用 —— 输入/输出均为 JSON,并共享兼容 OpenAI 的 `/v1` 骨干网。请参阅 **[INTEROP.md](INTEROP.md)** 了解 suite 映射、组合模式和参考技术栈。 ## 集成 通过 [`cognis-connect`](https://github.com/cognis-digital/cognis-connect) 将 `chartwright` 的结果转发至 STIX/MISP/Sigma/Splunk/Elastic/Slack/webhook。请参阅 **[INTEGRATIONS.md](INTEGRATIONS.md)**。 ## 许可证 Cognis Open Collaboration License (COCL) 1.0 —— 请参阅 [`LICENSE`](LICENSE)。 © 2026 Cognis Digital LLC。最初的 Cognis 工作针对开放的 Helm chart 布局和模板行为;它不内嵌或供应商化 Helm 或 Sprig,且 不包含任何第三方代码、名称或品牌。 ## 领域 **主要领域:** Cyber & Security · **JTF MERIDIAN 部门:** NULLBYTE · SPECTER **主题:** `cognis` `security` `infosec` `cybersecurity` `blue-team` **Cognis Neural Suite** 的一部分 —— 包含 300+ 源代码可用的工具,组织在 JTF MERIDIAN 指挥结构下的 12 个领域中。请参阅 [GitHub 上的 suite](https://github.com/cognis-digital) 和 [jtf-meridian](https://github.com/cognis-digital/jtf-meridian) 了解各部分是如何协同工作的。 ## 使用指南 —— 逐步说明 `chartwright` 可以渲染、lint 并对比 Helm chart 及其 values —— 无需 Helm binary。 1. **安装**(纯标准库,Python 3.10+): pip install "git+https://github.com/cognis-digital/chartwright.git" 2. **渲染** chart 的模板(基于其 values),叠加环境覆盖文件和内联的 `--set`: chartwright template ./mychart --release prod --values values-prod.yaml --set image.tag=2.0 3. **Lint** chart 结构以及平衡的 if/range/with 块;`--fail-on warning` 可提高门禁标准: chartwright lint ./mychart --fail-on warning 4. **使用输出** —— 列出 chart 引用的 `.Values` 路径(使用 `--fail-on-undeclared` 捕捉拼写错误),或对比不同环境下的 values: chartwright schema ./mychart --fail-on-undeclared chartwright diff values.yaml values-prod.yaml --format json 5. **在 CI 中实现自动化** —— 将 lint + schema 检查作为合并前的门禁: chartwright lint ./mychart && chartwright schema ./mychart --fail-on-undeclared 或者将其作为本地 MCP 服务器(stdio JSON-RPC)运行:`chartwright mcp`。
标签:Helm, MCP, Python, SOC Prime, 开发工具, 无后门, 模板引擎, 逆向工具, 静态检查