2017-10-19 21 views

Répondre

1

Je ne sais pas de toute façon de faire exactement ce que vous voulez, mais je pense que vous pourriez faire quelque chose que vous obtient 75% à 100% là-bas (en fonction de ce que vous attendez de se produire pour les étapes ultérieures lorsqu'une erreur se produit) avec une bibliothèque partagée:

pipeline { 
    stages { 
    stage('Do work') { 
     steps { 
      stepsChuckNorrisWrote { 
     ... 
      } 
     } 
    } 
    } 
} 

Ensuite, créez une variable globale dans une bibliothèque partagée appelée stepsChuckNorrisWrote. Vous passez une fermeture ici. Cette fermeture peut contenir toutes les étapes que vous voulez. Enveloppez l'exécution de cette fermeture dans un try/catch et ne le laissez pas échouer.

Quelque chose comme ceci:

// vars/stepsChuckNorrisWrote.groovy 
def call(Closure body) { 
    node('windows') { 
     try { 
      body() 
     } catch (all) { 
      // handle errors here 
     } 
    } 
} 

Avec cette méthode, dès la première étape échoue, aucun des autres se poursuivra. Il peut y avoir un moyen de tirer chaque étape de la fermeture et essentiellement l'envelopper dans un try/catch, mais je ne sais pas comment faire une telle chose.

+0

Merci Rob, qui est ce que je pensais peut-être la seule option. Je voulais supprimer la nécessité d'écrire la partie «étapes», mais en passant par le code suggère que ce n'est pas possible :( –