目标:多克/组合
问题:多克/组合#13613
公开分支:https://github.com/scarab-systems/compose
当前提交:319ee5604 — 在提取配置变量时跳过验证
拉取请求状态:尚未开启
此次现场测试针对的是多克组合在配置变量提取方面的边界情况。
当组合尝试从包含类型化字段内模板值的配置文件中发现插值变量时,该问题浮出水面。
示例结构:
yaml 端口: - 主机_ip: "${LXKNS_ADDRESS:-127.0.0.1}" 已发布: "${LXKNS_PORT:-5010}"
配置 --变量 命令的目的是发现组合文件中使用的变量。
但在此路径中,组合加载的是未解析、未插值的模型,并仍然允许对故意保留为模板状态的字段运行验证。
这意味着像这样的值:
文本 ${LXKNS_ADDRESS:-127.0.0.1}
可能会在插值本应解析它之前,就进入互联网协议地址验证环节。
失败模式为:
文本 无效的互联网协议地址
边界
这不是一个端口解析错误。
这是一个介于以下各项之间的边界问题:
- 变量发现
- 未解析的配置加载
- 插值时机
- 类型化字段验证
变量发现需要检查未解析的模型,以便找到变量引用。
验证需要在模型旨在被解释为实际运行时配置时运行。
这两个阶段并不相同。
该补丁保持了正常配置加载时的验证完整性,但仅在为变量提取而加载未解析、未插值的模型时跳过验证。
变更内容
修复更新了 配置 --变量 路径以及远程栈插值变量发现路径,使得仅在为变量发现而加载未解析模型期间跳过验证。
已为模板化的类型化端口字段添加了回归测试覆盖,包括:
yaml 主机_ip: "${LXKNS_ADDRESS:-127.0.0.1}" 已发布: "${LXKNS_PORT:-5010}"
修复保持了范围狭窄:变量提取现在可以检查模板化的类型化字段,而不会将未解析的插值语法视为最终的运行时值。
验证
在修复之前,回归测试失败,报错:
文本 无效的互联网协议地址
修复之后:
文本 go test ./cmd/compose
通过。
文本 docker buildx bake lint
通过,结果为:
文本 0 个问题
公开差异泄露扫描也通过:无敏感数据泄露残留、本地路径、代码生成工具引用、教条引用、生成的运行时 artifacts 或私有诊断内容。
存在开发者证书协议签署。
为何重要
这看起来是一个小修复,但该边界很重要。
配置工具必须知道何时读取文件以发现变量引用,以及何时验证完全解析的运行时配置。
如果这些阶段相互混淆,工具会在完成发现需要插值的内容之前,就开始拒绝有效的模板。
这类错误看起来像是用户输入值有误,但更深层次的问题是时机:验证发生在值尚不应为最终状态的阶段。
此次现场测试将问题简化为该边界问题,并在不削弱正常验证的情况下进行了修复。
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。