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.
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
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
}