我有一个上游工作,执行4个下游工作。
如果上游工作成功完成,则下游工作开始执行。
由于上游工作成功完成,它会得到一个蓝色的小球(构建结果=稳定),但是即使下游工作失败(红球)或不稳定(黄球),上游工作仍然保持其蓝色。
有没有办法让上游工作的结果取决于下游工作?也就是说,如果三个下游工作都得到了稳定的构建,但其中一个得到了不稳定的构建,那么上游构建结果应该是不稳定的。
我有一个上游工作,执行4个下游工作。
如果上游工作成功完成,则下游工作开始执行。
由于上游工作成功完成,它会得到一个蓝色的小球(构建结果=稳定),但是即使下游工作失败(红球)或不稳定(黄球),上游工作仍然保持其蓝色。
有没有办法让上游工作的结果取决于下游工作?也就是说,如果三个下游工作都得到了稳定的构建,但其中一个得到了不稳定的构建,那么上游构建结果应该是不稳定的。
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个“下游”构建作为构建步骤。这意味着如果任何子构建失败,您的“父”构建也会失败。
当我们想要在构建流水线插件视图中隐藏复杂性时,我们会这样做。
我的项目的解决方法是创建一个新的作业,它是下游作业的下游。我们在原始的三个下游作业中设置了一个后构建步骤"触发参数化构建其他项目"。传递到新作业中的参数取决于三个作业的状态,并且参数将导致新作业相应地做出反应。
1. 创建一个包含一个简单类和一个简单测试的新作业。两个参数都是依赖的,即如果参数"status"=fail
,则类失败;如果参数"status"=unstable
,则类通过但测试失败等。
2. 对具有相关配置的三个原始下游作业设置"触发参数化构建其他项目"。
3. 相应地设置新作业的通知。