Parameterized Trigger Pluginを使用して、下流ビルドをトリガーします。ダウンストリームジョブが失敗した場合、上流のJenkins/Hudsonを失敗としてマークします。
ダウンストリームで障害が発生した場合にアップストリームジョブが失敗するように指定する方法を教えてください。上流のジョブは、実際にはパラメータが下流に渡されるダミージョブです。
Parameterized Trigger Pluginを使用して、下流ビルドをトリガーします。ダウンストリームジョブが失敗した場合、上流のJenkins/Hudsonを失敗としてマークします。
ダウンストリームで障害が発生した場合にアップストリームジョブが失敗するように指定する方法を教えてください。上流のジョブは、実際にはパラメータが下流に渡されるダミージョブです。
Fail hudson build with groovy scriptをご覧ください。あなたは上流の仕事にアクセスすることができますが、そのビルドに失敗します... Hudson/Jenkinsのビルド後のアクションは今すぐ注文を指定することができません:あなたのgroovyスクリプトが他のポストビルドアクションがビルドの結果(つまりテスト結果の解析)に影響する場合、Jenkinsがgroovyスクリプトの後に実行することを決定した場合、アップストリームジョブのステータスを更新することはできません。
このコードは不安定な上流のビルドをマークする/下流ジョブのステータスに基づいて失敗しました。私は追加したい
/*************************************************
Description: This script needs to put in Groovy
Postbuild plugin of Jenkins as a Post Build task.
*************************************************/
import hudson.model.*
void log(msg) {
manager.listener.logger.println(msg)
}
def failRecursivelyUsingCauses(cause) {
if (cause.class.toString().contains("UpstreamCause")) {
def projectName = cause.upstreamProject
def number = cause.upstreamBuild
upstreamJob = hudson.model.Hudson.instance.getItem(projectName)
if(upstreamJob) {
upbuild = upstreamJob.getBuildByNumber(number)
if(upbuild) {
log("Setting to '" + manager.build.result + "' for Project: " + projectName + " | Build # " + number)
//upbuild.setResult(hudson.model.Result.UNSTABLE)
upbuild.setResult(manager.build.result);
upbuild.save()
// fail other builds
for (upCause in cause.upstreamCauses) {
failRecursivelyUsingCauses(upCause)
}
}
} else {
log("No Upstream job found for " + projectName);
}
}
}
if(manager.build.result.isWorseOrEqualTo(hudson.model.Result.UNSTABLE)) {
log("****************************************");
log("Must mark upstream builds fail/unstable");
def thr = Thread.currentThread()
def build = thr.executable
def c = build.getAction(CauseAction.class).getCauses()
log("Current Build Status: " + manager.build.result);
for (cause in c) {
failRecursivelyUsingCauses(cause)
}
log("****************************************");
}
else {
log("Current build status is: Success - Not changing Upstream build status");
}
ダウンストリームジョブが失敗した場合にアップストリームジョブをSUCCESSとマークすることはできますか? – yair
唯一のものは、長いパイプラインのためにあなたが心の中でそれを露出する必要があるので、ブロックされたジョブがまだビルドエグゼキュータを占めているということです。しかし、この回答をお寄せいただきありがとうございます。同じことをやろうとしていて、ビルドステップの使用についても考えていませんでした。 – Jason
これは "postbuild-task"プラグインを使用しますか? –
ありがとうございました(私の最後の質問は無視してください) –