使用groovy在jenkins中编写yaml文件
在Groovy中编写/修改*.yaml文件的最佳方法是什么 我想修改jenkins管道作业中yaml文件中维护的版本。使用使用groovy在jenkins中编写yaml文件,jenkins,groovy,yaml,jenkins-pipeline,Jenkins,Groovy,Yaml,Jenkins Pipeline,在Groovy中编写/修改*.yaml文件的最佳方法是什么 我想修改jenkins管道作业中yaml文件中维护的版本。使用readYaml我可以获取内容,但如何才能将其重新写入 我想到的一种方法是对文件执行sed。但是我认为这不是很准确。如果您只需要更新yaml文件中的版本,那么您可以读取内容,进行字符串替换,然后写回您的文件 作为一个示例,下面是一个单元测试,它演示了这一点: 假设src/test/resources包含一个文件version.yaml,该文件如下所示: version: '0
readYaml
我可以获取内容,但如何才能将其重新写入
我想到的一种方法是对文件执行
sed
。但是我认为这不是很准确。如果您只需要更新yaml文件中的版本,那么您可以读取内容,进行字符串替换,然后写回您的文件
作为一个示例,下面是一个单元测试,它演示了这一点:
假设src/test/resources
包含一个文件version.yaml
,该文件如下所示:
version: '0.0.1'
anotherProperty: 'value'
该插件具有与YAML文件交互的
readYaml
和writeYaml
步骤<默认情况下,code>writeYaml不会覆盖您的文件,因此您必须先将其删除
def filename = 'values.yaml'
def data = readYaml file: filename
// Change something in the file
data.image.tag = applicationVersion
sh "rm $filename"
writeYaml file: filename, data: data
IMHO的可能副本它不是副本,因为它不等同于Jenkins插件的readYaml方法最近名为“Pipeline utility steps”的Jenkins插件包含
readYaml
(将yaml文件读入对象)和writeYaml
,它接受一个对象并将其写为yaml文件。坦率地说,这是savior:sh“rm$filename”这应该是答案。如果您不知道或不关心要替换的字符串的版本,则不会。
def filename = 'values.yaml'
def data = readYaml file: filename
// Change something in the file
data.image.tag = applicationVersion
sh "rm $filename"
writeYaml file: filename, data: data