it-swarm.com.de

yaml-datei in jenkins mit groovy schreiben

Wie schreibe/modifiziere ich eine * .yaml-Datei in Groovy?

Ich möchte die Version ändern, die in einer yaml-Datei in meinem jenkins-Pipeline-Job gespeichert wird. Mit readYaml kann ich den Inhalt abrufen, aber wie kann ich ihn zurückschreiben?

Eine Möglichkeit, die mir einfällt, wäre, eine sed für die Datei zu machen. Aber ich finde das nicht sehr genau.

8
Christopher

Das Pipeline Utility Steps plugin enthält die Schritte readYaml und writeYaml, um mit YAML-Dateien zu interagieren. writeYaml überschreibt Ihre Datei standardmäßig nicht, so dass Sie sie zuerst entfernen müssen.

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
7
Randy

Wenn Sie nur eine Version in einer Yaml-Datei aktualisieren müssen, können Sie einfach den Inhalt lesen, einen String ersetzen und in Ihre Datei schreiben.

Als ein Beispiel ist hier ein Unit-Test, der dies demonstriert:

Angenommen, src/test/resources enthält eine Datei version.yaml, die wie folgt aussieht:

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
}
0
GlennV