【发布时间】:2018-09-01 17:24:43
【问题描述】:
我们有需要读取具有特定结构的 YAML 文件的工具。当我们得到 YAML 文件时,我们需要知道是否
- 根据某些准则检查 YAML 文件是否有效 - 语义检查
- 语法错误在哪里
例如,这是我们需要解决的验证示例
_version: {required: true}
id: {required: true, pattern: '/^[A-Za_\-\.]+$/'}
release-version: {required: true}
type:
builds:
type:seq
sequence:
-type:map
mapping:
name:{required: true, unique: true, pattern: '/^[A-Za-z0-3_\-\.]+$/'}
params:
type: map
mapping: { =: {type: any} }
映射是键值对象
seq 可以有多个构建
输入任何是和键值
我们使用这个开源来解析yaml https://github.com/go-yaml/yaml
一个想法(这很好)是转换为 json,如下所示,通过将文件转换为 json 并验证它是否有库支持它,在我的上下文中的任何示例都会非常有帮助 https://github.com/xeipuuv/gojsonschema
但不确定我如何处理
Type map
Type seq
【问题讨论】:
-
为什么是
docker标签? -
@BMitch - 我相信 docker 和 k8s 有相同的任务,验证 yaml 架构以进行部署,不是吗?所以也许我可以使用相同的想法......
标签: validation go schema yaml dockerfile