2016-12-29 1 views
1

Ich habe ein Jenkins-Pipeline-Skript, das zum größten Teil funktioniert gut und ich umgebe die meisten Dinge, die einen fatalen Fehler mit Versuch Fänge auslösen wird. Aber von Zeit zu Zeit passieren wirklich unerwartete Dinge und ich würde gerne in der Lage sein, einen sicheren Fang zu haben - alles verfügbar, um einige abschließende Berichte zu erstellen, bevor der Build fehlschlägt.Wie kann ich irgendwelche Pipeline-Fehler in Jenkins fangen?

Gibt es keine endgültige Standard 'Stufe' kann ich definieren, die ausgeführt wird, wenn ein Fehler nicht gefangen wird?

+0

können Sie es in einem 'try {} finally {}' einpacken – Rik

Antwort

4

Sie können es tun, indem in einem großen try/catch/finally {} Block alle Buildstufen Verpackung, zum Beispiel:

node('yournode') { 
    try { 
     stage('stage1') { 
      // build steps here... 
     } 
     stage('stage2') { 
      // .... 
     } 
    } catch (e) { 
     // error handling, if needed 
     // throw the exception to jenkins 
     throw e 
    } finally { 
     // some common final reporting in all cases (success or failure) 
    } 
} 
0

Obwohl bereits für eine skript Pipeline beantwortet Ich mag würde darauf hinweisen, dass für eine deklarative Pipeline wird dies mit einem post section getan:

pipeline { 
    agent any 
    stages { 
     stage('No-op') { 
      steps { 
       sh 'ls' 
      } 
     } 
    } 
    post { 
     always { 
      echo 'One way or another, I have finished' 
      deleteDir() /* clean up our workspace */ 
     } 
     success { 
      echo 'I succeeeded!' 
     } 
     unstable { 
      echo 'I am unstable :/' 
     } 
     failure { 
      echo 'I failed :(' 
     } 
     changed { 
      echo 'Things were different before...' 
     } 
    } 
} 

Jede Stufe kann auch über eine eigene Sektion, wenn erforderlich.

Verwandte Themen