Quel est le meilleur moyen d'écrire/modifier un fichier * .yaml dans Groovy?
Je souhaite modifier la version conservée dans un fichier yaml au sein de mon travail de pipeline jenkins. Je peux obtenir le contenu avec readYaml
, mais comment puis-je le réécrire?
Une façon qui me vienne à l’esprit serait de faire une sed
dans le fichier. Mais je pense que ce n'est pas très précis.
Le étapes de l'utilitaire de pipeline plugin comporte les étapes readYaml
et writeYaml
pour interagir avec les fichiers YAML. writeYaml
n'écrase pas votre fichier par défaut, vous devez donc d'abord le supprimer.
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
Si vous avez juste besoin de mettre à jour une version dans un fichier yaml, alors vous pouvez simplement lire le contenu, faire un remplacement de chaîne et réécrire dans votre fichier.
À titre d'exemple, voici un test unitaire qui démontre ceci:
Supposons que src/test/resources
contient un fichier version.yaml
qui ressemble à ceci:
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
}