用groovy在jenkins中写yaml文件

Chr*_*her 11 groovy yaml jenkins jenkins-pipeline

在Groovy中编写/修改*.yaml文件的最佳方法是什么?

我想在我的jenkins管道作业中修改yaml文件中维护的版本.随着readYaml我就能得到上述内容,但我怎么能再次写回来?

我想到的一种方法是sed在文件上做一个.但我认为那不是很准确.

Ran*_*ndy 11

管道实用程序步骤插件具有readYamlwriteYaml步骤与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
Run Code Online (Sandbox Code Playgroud)


小智 10

您可以使用“ writeYaml ”,并将“ overwrite ”标志设置为true
这将允许就地更新 YAML 文件。
默认情况下,它设置为 false。

您可以在管道实用程序步骤文档中阅读更多相关信息


Gle*_*nnV 0

如果您只需要更新 yaml 文件中的版本,那么您只需读取内容,进行字符串替换并写回文件即可。

作为示例,下面的单元测试演示了这一点:

假设包含一个如下所示的src/test/resources文件:version.yaml

version: '0.0.1'

anotherProperty: 'value'
Run Code Online (Sandbox Code Playgroud)
@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
}
Run Code Online (Sandbox Code Playgroud)