2017-04-16 7 views
2

declarative pipelineが失敗したステージを報告するにはどうすればよいですか?失敗ブロックでは、failedStage.nameを取得し、それを報告したい(最終的に余裕を持って)。Jenkins宣言型パイプラインで失敗したステージを判断する

pipeline { 
    agent { label 'master'} 
    stages { 
     stage('Ok') { 
      steps { 
       echo 'do thing' 
      } 
     } 
     stage('NotOK') { 
      steps { 
       sh 'make fail' 
      } 
     } 
    } 
    post { 
     always { 
      echo 'ok' 
     } 
     failure { 
      echo 'Failed during Which Stage?' 
     } 
    } 
} 

答えて

0

キャッチ部分にtry catchとslackを使用できます。

+1

私が宣言的パイプラインに入っていれば、私はそうすることはできません。宣言的なパイプラインには、エラーメッセージにアクセスして報告する方法があると思います。私は宣言的なパイプラインを使用しているので、パイプラインのparamsのすべての設定を保持することができます。 –

+0

火曜日までにこれを行う方法が見つからない場合は、宣言パイプラインを完全にダンプして基本的なGroovyに移動しますので、シンプルなtry catchを使用します。私は宣言が改善されると思っていたが、部分的に裏付けされていると思われていた。 –

+0

各段階の始めに段階名を含む変数を設定し、しかし非常にエレガントではない – herm

0

各段階でpostディレクティブを使用して、特定のアクションや通知で失敗した場合に対応できます。

すべての段階でそれを繰り返す必要があるかのようには理想的ではありません。ステージ名に動的にアクセスできるとは思わないので、実際には冗長でハードコードされています。あなたはおそらくライブラリを使用することをリファクタリングすることができます。

pipeline { 
    agent { label 'master'} 
    stages { 
     stage('Ok') { 
      steps { 
       echo 'do thing' 
      } 
      post { 
       failure { 
        echo 'FAILED (in stage OK - should not happen :))' 
       } 
      } 
     } 
     stage('NotOK') { 
      steps { 
       sh 'make fail' 
      } 
      post { 
       failure { 
        echo 'FAILED (in stage NotOK)' 
       } 
      } 
     } 
    } 
    post { 
     always { 
      echo 'COMPLETED (global)' 
     } 
     failure { 
      echo 'FAILED (global)' 
     } 
    } 
} 
関連する問題