我有一个脚本化的Jenkins管道,其中我使用了一个名为CUSTOM_YAML的多行字符串参数。
在构建作业时,我将该参数的输入作为yaml文本,并将其转换为.yaml文件:
writeFile file: 'demo.yaml', text: params.DEMO_YAML
现在,我想验证这个yaml文件(demo.yaml)的格式是否正确。
注意:就像有多个工具可以手动执行此操作一样(例如https://codebeautify.org/yaml-validator ),我们可以粘贴文本并单击validate和。但是我如何在我的Jenkins管道中实现这一点呢?
发布于 2020-10-12 12:52:16
您可以使用内置的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*/ }}
块中。
https://stackoverflow.com/questions/64316914
复制相似问题