2017-05-02 2 views
2

Ich habe folgenden post Abschnitt failure:Erhalten Fehlerursache in Jenkinsfile Ausfall

post { 
     failure { 
      mail subject: "\u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed", 
        body: """Build ${env.BUILD_URL} is failing! 
          |Somebody should do something about that""", 
         to: "[email protected]", 
       replyTo: "[email protected]", 
        from: '[email protected]' 
     } 
    } 

Ich mag würde, die Gründe sind, warum der Bau in dem Körper der Fehlermeldung fehlgeschlagen.

Wie kann ich das tun?

Falls nicht, gibt es eine Möglichkeit, die Build-Protokolldatei an die E-Mail anzuhängen?

Antwort

2

Ich kenne keine Möglichkeit, den Fehlergrund automatisch aus der Luft zu holen.

Sie können jedoch "post {failure {" - Blöcke in jeder Phase verwenden, um mindestens die Phase zu erfassen, in der sie in eine Umgebungsvariable (z. B. env.FAILURE_REASON) fehlgeschlagen ist, und auf diese env var im letzten (globalen Bereich) Benachrichtigungsblock.

Für genauere Informationen können Sie den gleichen Mechanismus der globalen env-Variablen wiederverwenden, aber verwenden Sie try {} catch {} - Blöcke, um festzustellen, welcher bestimmte Schritt fehlgeschlagen ist.

Ein allgemeines Beispiel wäre:

pipeline { 
    stages { 
     stage('Build') { 
     steps { 
      ... 
     } 
     post { 
      failure { 
      script { env.FAILURE_STAGE = 'Build' } 
      } 
     } 
     } 
     stage('Deploy') { 
     steps { 
      ... 
     } 
     post { 
      failure { 
      script { env.FAILURE_STAGE = 'Deploy' } 
      } 
     } 
     } 
     ... 
    } 
    post { 
     failure { 
      mail subject: "\u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed", 
        body: """Build ${env.BUILD_URL} is failing in ${env.FAILURE_STAGE} stage! 
          |Somebody should do something about that""", 
         to: "[email protected]", 
       replyTo: "[email protected]", 
        from: '[email protected]' 
     } 
     } 
    } 

Rein technisch können Sie sogar einige automatisierte Triage auf der fehlerhaften Phase basierend tun und eine gezieltere Benachrichtigung oder sogar schaffen spezifische (zum Beispiel Jira) Tickets senden.

Für das Konsolenprotokoll an die E-Mail-Benachrichtigung angebracht, würden Sie bei emailext und die aussehen wollen ‚attachLog: true‘ Attribut