问题描述
|
我有一个上游工作,可以执行4个下游工作。
如果上游作业成功完成,则下游作业将开始执行。
由于上游作业成功完成,因此它会变成蓝色球(生成结果=稳定),但是即使艰难的下游作业失败(红色球)或不稳定(黄色球),上游作业仍会保持蓝色。
无论如何,是否有依赖于下游作业的工作来获得上游作业的结果?我的意思是,如果三个下游作业获得了稳定的构建,但其中一个获得了不稳定的构建,则上游构建的结果应该是不稳定的。
解决方法
我找到了解决方案。有一个名为Groovy Postbuild插件的插件,可让您在后期构建阶段执行Groovy脚本。
在下游作业中添加一个简单的代码,即可修改上游的总体状态。
这是您需要添加的代码:
upstreamBuilds = manager.build.getUpstreamBuilds();
upstreamJob = upstreamBuilds.keySet().iterator().next();
lastUpstreamBuild = upstreamJob.getLastBuild();
if(lastUpstreamBuild.getResult().isBetterThan(manager.build.result)) {
lastUpstreamBuild.setResult(manager.build.result);
}
您可以在我的博客条目中找到更多信息。
,另一种可能对您有用的选项是使用参数化的构建插件。它允许您将4个“下游”构建作为构建步骤。这意味着,如果任何子版本失败,则您的“父版本”版本可能会失败。
当我们想隐藏构建管道插件视图的复杂性时,我们可以这样做。
,我们遇到了类似的问题,但尚未找到完美的解决方案。部分解决方案是使用Promoted Builds插件。为上游项目配置它,以便在下游作业完成时包括一些可视指示器。它不会更改整体作业状态,但是会在下游作业失败时通知我们。
,也许这个插件可以满足您的需求?
Jenkins先决条件构建步骤插件
,我项目的解决方法是创建新工作,这是下游工作的下游。我们在所有三个原始下游作业中都设置了一个后构建步骤“在其他项目上触发参数化的构建”。解析为新作业的参数取决于三个作业的状态,该参数将导致新作业做出相应的反应。
1.创建一个包含一个简单类和一个简单测试的新作业。两个参数都依赖,即如果参数``1''通过类,则类失败,如果参数``2''通过类,则类失败,以此类推。
2.为其他三个具有相关配置的原始下游作业,在其他项目上设置触发器参数化构建。
3.相应地设置新作业的通知。