JOB D
実行結果に関係なくMaster MultiJob Project (Job)
を成功させたいと考えています。しかし、JOB A
,JOB B
およびJOB C
は成功するはずです。
Groovy Postbuild Pluginを使用してMaster Multijob Project (Job)
を成功させることができます。
このプラグインをJenkinsにインストールすると、Post-build Actions
セクションにGroovy Postbuild
ステップが得られます。 Groovy Postbuild
ステップを選択すると、ジョブの動作を操作するGroovyスクリプトを追加するオプションが与えられます。
そこに次のスクリプトを追加します。
if([email protected] == hudson.model.Result.FAILURE){
errpattern = ~/[FAILURE].*/;
manager.build.logFile.eachLine{ line ->
errmatcher=errpattern.matcher(line)
if (errmatcher.find()) {
[email protected] = hudson.model.Result.SUCCESS
}
}
}
上記のスクリプトが何をするかは、それが失敗した場合、成功へのあなたの親ジョブのビルド・ステータスを変更です。しかし、ここで問題となるのは、あなたの段階で子どもの仕事が失敗した場合のビルドステータスを成功に変えることです。
他のジョブではなく、JOB D
のFAILUREステータスのみを無視します。ですから、JOB A
、JOB B
、JOB C
という実行結果を判断することができます。いずれかが失敗した場合、Groovyスクリプトが親ジョブのビルド状況をSUCCESSに変更しないようにすることができます。
あなたのマルチジョブ構成の
Build
セクションで
JOBA_BUILD_STATUS=$(curl --silent "http://<jenkins_URL>/job/JOBA/$BUILD_ID/api/json" | jq -r '.result')
JOBB_BUILD_STATUS=$(curl --silent "http://<jenkins_URL>/job/JOBB/$BUILD_ID/api/json" | jq -r '.result')
JOBC_BUILD_STATUS=$(curl --silent "http://<jenkins_URL>/job/JOBC/$BUILD_ID/api/json" | jq -r '.result')
、すべてのフェーズが追加した後:私たちは、次のように使用することができますJOB A
、JOB B
とJOB C
のビルド結果を決定するために、今すぐ
、 Execute shell
ステップを実行し、上記のスクリプトを追加します。
それでは、JOB D
のビルド結果を無視してJOB A
、JOB B
とJOB C
のビルド結果を検討するためのGroovyスクリプトを微調整しましょう。
if(([email protected] == hudson.model.Result.FAILURE) && ("SUCCESS".equals(manager.build.buildVariables.get("JOBA_BUILD_STATUS"))) && ("SUCCESS".equals(manager.build.buildVariables.get("JOBB_BUILD_STATUS"))) && ("SUCCESS".equals(manager.build.buildVariables.get("JOBC_BUILD_STATUS")))){
errpattern = ~/[FAILURE].*/;
manager.build.logFile.eachLine{ line ->
errmatcher=errpattern.matcher(line)
if (errmatcher.find()) {
[email protected] = hudson.model.Result.SUCCESS
}
}
}
さて、それはJOB D
のビルド結果を無視して、JOB A, B & C
のビルド結果が成功かいないかどうかを確認します。成功した場合は、マルチジョブのビルド結果がSUCCESSに変更されます。
JOB Dを構成から除外したり、無効にすることはできません。失敗しても問題ありません。 – ANIL
プロジェクトに関する追加情報が必要です。いいえ、私はMultijobから除外または無効にすることはできません。 – Andrey