web-dev-qa-db-fra.com

écrire fichier yaml dans Jenkins avec groovy

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.

8
Christopher

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

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