2017-05-02 13 views
2

私は、次のpost障害セクションがあります。私は、ビルドエラーメッセージの本文に失敗した理由を含めたいJenkinsfile障害のエラー理由を取得

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]' 
     } 
    } 

を。

どうすればいいですか?

もしそうでない場合、ビルドログファイルを電子メールに添付する方法はありますか?

答えて

2

私は、障害の原因を薄い空気から自動的に取り出す方法を知らない。

しかし、各フェーズでpost {failure {"ブロックを使用して、少なくとも環境変数(例:env.FAILURE_REASON)に失敗したフェーズを取得し、最後のglobalスコープ)通知ブロック。

さらに細かくするには、グローバルenv変数と同じメカニズムを再利用できますが、try {} catch {}ブロックを使用して特定のステップが失敗したことをキャプチャします。

一般的な例は次のようになります。

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]' 
     } 
     } 
    } 

技術的には、あなたも失敗し、ステージに基づいて、いくつかの自動化されたトリアージを行うと、よりターゲットを絞った通知を送信し、あるいは特定の(例えば、Jiraの)チケットを作成することができます。

電子メール通知にコンソールログを取り付けるための、あなたは emailextを見てみたいと思いますと「attachLog:true」の属性