问题描述
我有一个脚本化的Jenkins管道,我在其中使用名称为CUSTOM_YAML的多行字符串参数。
在构建作业时,我将该参数输入为yaml文本并将其转换为.yaml文件:
writeFile file: 'demo.yaml',text: params.DEMO_YAML
现在,我要验证此Yaml文件(demo.yaml)的格式是否正确。
注意:就像有多种工具可以手动完成此操作一样(例如https://codebeautify.org/yaml-validator),我们可以在其中粘贴文本,然后单击validate和。但是如何在Jenkins管道中实现这一目标?
解决方法
您可以使用内置readYaml
步骤来进行基本语法验证。为了检查数据的有效性,您可以使用assert
个离子。
如果您需要做的就是使任何错误的构建都失败,那么您已经完成了。当readYaml
或assert
失败时,将自动记录错误。如果您需要专门处理错误或要改善断言错误消息,请将代码包装在try/catch
中(注意:断言必须捕获为AssertionError
)。
node {
def CUSTOM_YAML = '''\
foo: "bar"
baz:
- "baz1"
- "baz2"
'''
try {
// Parse the YAML. Does basic syntax checking.
def config = readYaml text: CUSTOM_YAML
// Validate YAML data.
assert config.foo == 'bar'
assert config.baz.size() >= 2
}
catch( Exception e ){
// Handle syntax error
}
catch( AssertionError e ){
// Handle data validation error (assert's)
}
}
这是脚本化管道的示例。如果您有声明性管道,则可以将代码放入steps{script{ /*the code*/ }}
块中。