2017-09-08 2 views
1

Comment obtenir le statut des étapes précédentes dans un pipeline Jenkins. Par exemple: Mon exemple de pipeline est comme ci-dessous:Comment obtenir le statut d'une étape particulière dans un pipeline

pipeline { 
    agent 
    { 
     node { 
       label 'master' 
       customWorkspace "${env.JobPath}" 
       } 
    } 

    stages 
    { 
     stage('Start') { 
      steps { 
       sh 'ls' 
      } 
     } 

     stage ('set_env') { 
      steps { 
       // script to set environment. 
      } 
     } 

     stage ('Build') { 
      steps { 
       // script to build. 
      } 
     } 

     stage ('Send_mail') { 
      steps { 
       // script to send mail. 
      } 
     } 

     stage('End') { 
      steps { 
       sh 'ls' 
      } 
     } 
    } 
} 

Comment puis-je obtenir l'état d'une étape particulière dans un pipeline. par exemple: je veux prendre certaines décisions en fonction du succès ou de l'échec de l'étape «Construire».

Y a-t-il une variable d'environnement qui suit l'état de chaque étape, ou une API REST Jenkins qui peut m'aider à y parvenir.

Merci!

+0

Via 'currentBuild.result' vous pouvez définir l'état de tout le travail. Mais si vous voulez seulement prendre des décisions dans votre pipeline: que diriez-vous d'utiliser une variable groovy normale comme drapeau? Si vous définissez une variable dans un contexte global, vous pouvez l'utiliser sur plusieurs étapes dans la même construction. Ou peut-être que je ne comprends pas vraiment la question? – fishi

+0

Merci fishi pour votre suggestion. Veuillez vous prier d'élaborer sur votre logique avec un exemple de code aussi. Merci – Yash

+0

Je cherche la même chose que je veux faire un rapport à la fin de la construction et j'ai besoin d'accéder à toutes les étapes et d'obtenir le résultat pour chacun d'entre eux. Jusqu'à présent, je n'ai pas trouvé de code qui le fasse. – sorin

Répondre

0

Les pipelines déclaratifs de Jenkins sont une syntaxe opiniâtre par rapport à l'ancienne approche de pipeline de jenkins. Cela signifie que vous pouvez également considérer un pipeline déclaratif jenkins comme un script groovy avec du sucre syntaxique supplémentaire. Vous pouvez donc utiliser librement des variables. Comme mentionné dans mon commentaire ci-dessus, vous pouvez définir l'état de tous les travaux via currentBuild.result, mais si vous voulez prendre des décisions dans le même travail entre les étapes: utilisez simplement des variables groovy pour indiquer l'état de l'étape précédente. Prenant votre exemple:

pipeline { 

    def didSucceed = true 

    agent 
    { 
     node { 
       label 'master' 
       customWorkspace "${env.JobPath}" 
       } 
    } 

    stages 
    { 
     stage('Start') { 
      steps { 
       sh 'ls' 
      } 
     } 

     stage ('set_env') { 
      steps { 
       // script to set environment. 
       didSucceed = true // Here you indicate whether stuff actually worked.. 
      } 
     } 

     stage ('Build') { 
      steps { 
       if (didSucceed) { 
        // script to build. 
       } else { 
        // Procedure in case of previous error.. 
       } 
      } 
     } 

     stage ('Send_mail') { 
      steps { 
       // script to send mail. 
      } 
     } 

     stage('End') { 
      steps { 
       sh 'ls' 
      } 
     } 
    } 
} 

Vous pouvez aussi rester d'une manière plus déclarative en utilisant l'instruction when en combinaison avec une variable booléenne.