2017-12-16 20 views
3

Jenkinsの宣言パイプラインを設定しています。私のpostセクションでは、slackSendを使用してビルドが壊れていることを私のチームに通知しています。私は失敗理由を含めたいと思う。これはenvまたはcurrentBuildなどで利用できますか?ドキュメントで何も見たことはありませんが、一般的な使用例のように見えます。Jenkinsパイプラインの失敗理由を取得する

currentBuild.rawBuild.getLog(10)の使用についての記事を見てきましたが、あまりにも多くの情報が入っています。実際の例外をゼロにする必要があります

+0

あなたはhttps://stackoverflow.com/questions/43736594/get-error-reason-in-jenkinsfile-failureを見ましたか? – saw303

+0

これはまともなスタートですが、失敗/失敗の理由はありません。 – MikeB

答えて

1

もう1つの方法はuse a catchErrorまたは少なくともa try/catchです。 String error = "${e}";

はcatchErrorについて、あなたは潜在的にcatchError関数に失敗する可能性がありますすべてのステップをラップします:
はその後、in this answerとして、エラーメッセージを取得することができます。エラーが発生した場合は、build.resultをFAILUREに設定し、を続行してをビルドします。

try/catchアプローチのみが実際のエラーe(およびその文字列)をキャッチするのに役立つ可能性があることを指摘しているcatchErrorを参照してください。
その後、そのエラー文字列をグローバル変数に追加すると、postステップがアクセスできる可能性があります。
これは、currentBuild.rawBuild.getLog(10)よりも冗長ではなく、より正確です。

+0

ありがとう情報のために!私は宣言的なパイプラインを使用しているので、スクリプト{try {...} catch(e){...}} 'で各ステージのすべてのステップをラップする必要がありますか? – MikeB

+0

@MikeBはい、宣言はtry/catchと互換性がないかもしれませんが、https://stackoverflow.com/q/44003788/6309 – VonC

+0

を参照してください。ステップ内のエラーをキャッチするには、スクリプトを使用して変数を割り当てることができます。 https://github.com/jenkinsci/pipeline-examples/blob/094fa9f02f95dfc0c7d798c7e83b8d38caae0a65/declarative-examples/simple-examples/postUnstable.groovy – VonC

関連する問題