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.
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 :( –