在Groovy中编写/修改* .yaml文件的最佳方法是什么?在jenkins中使用groovy编写yaml文件
我想修改我的jenkins管道作业中的yaml文件中维护的版本。随着readYaml
我可以得到的内容,但我怎么能再写回来?
我想到的一种方法是在文件上执行sed
。但我认为那不是很准确。
在Groovy中编写/修改* .yaml文件的最佳方法是什么?在jenkins中使用groovy编写yaml文件
我想修改我的jenkins管道作业中的yaml文件中维护的版本。随着readYaml
我可以得到的内容,但我怎么能再写回来?
我想到的一种方法是在文件上执行sed
。但我认为那不是很准确。
如果您只需要更新yaml文件中的版本,那么您可以只读内容,做一个String替换并回写到您的文件。
举个例子,这里有一个单元测试说明了这一点:
假设src/test/resources
包含一个文件version.yaml
,看起来像:
version: '0.0.1'
anotherProperty: 'value'
@Test
void replaceVersion() {
File yaml = new File("src/test/resources/version.yaml")
println yaml.text
String newVersion = "2.0.0"
yaml.text = yaml.text.replaceFirst(/version: '.*'/, "version: '${newVersion}'")
println yaml.text
}
的Pipeline Utility Steps插件有readYaml
和writeYaml
与YAML文件交互的步骤。默认情况下,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
的可能的复制[常规负载YAML文件修改和它在一个文件中写入(http://stackoverflow.com/questions/34668930/groovy-load-yaml-file-modify-and-write-it在文件中) – Rao
恕我直言,它不是重复的,因为它不等同于Jenkins插件的readYaml方法 – dhpizza
最近jenkins插件名为“Pipeline utility steps”,它包含'readYaml'(将yaml文件读入对象),和'writeYaml',它将一个对象作为yaml文件写下来。 –