Comment définir et effectuer une itération sur la carte en Jenkinsfile
Ma connaissance de groovy n'est pas aller très loin au-delà de ce peu que je sais à propos de Jenkinsfiles. Je suis en train de voir si c'est possible d'avoir une carte définie dans un Jenkinsfile qui peuvent ensuite être appliquées dans une "boucle" de la mode.
J'ai ces variables:
mymap = {
"k1": "v1"
"k2": "v2"
"k3": "v3"
}
J'ai un stage
dans mon Jenkinsfile qui ressemble à ceci:
stage('Build Image') {
withCredentials([[<the credentials>]) {
sh "make build KEY={k1,k2,k3} VALUE='{v1,v2,v3}'"
}
Est-il un moyen de faire un Build Image
stade pour chacun des couples dans mymap
? Je n'ai pas eu de chance avec ce que j'ai essayé.
Vous devez vous connecter pour publier un commentaire.
Il y a quelques similaires soumis par l'utilisateur exemples dans le Jenkins documentation.
Quelque chose comme cela devrait fonctionner:
node {
contexte? J'ai ceci:node { try { checkout scm if (env.BRANCH_NAME == 'master') {
et l'étape qui vient après.node
bloc est exécuté sur un agent de quelque part. Votrecheckout scm
bloc peut également être dans unstage
, par exemple appelé "passage en Caisse", si vous le souhaitez.createCompileJob
, ledata
defs et la@NonCPS
blocs devait être mis dans la section globale, et de mettre lework = [:]
....parallel work
dans la sectionBRANCH_NAME
conditionnelle a fait le tour.Vous pouvez effectuer une itération sur une carte comme ceci:
Je ne sais pas si une dynamique nombre de phases est utile. Peut-être que vous pourriez utiliser en parallèle les nœuds, mais je ne sais pas si c'est possible.
Il y a un autre moyen simple pour analyser objet json pour groovy objet L'analyse et la production de JSON
Depuis le 30 Mai 2017 vous pouvez parcourir les Cartes sans solutions de contournement.
Vous avez besoin de mettre à niveau Pipeline: Groovy plugin >= 2.33
Question connexe: https://issues.jenkins-ci.org/browse/JENKINS-27421
Plugin changelog: https://plugins.jenkins.io/workflow-cps