我有一个上游工作,执行4个下游工作。
如果上游作业成功完成,下游作业将开始执行。
上游工作,因为它成功完成,得到一个蓝色球(构建结果=稳定),但即使下游工作失败(红球)或不稳定(黄球),上游工作仍然保持其蓝色。
是否有上游作业的结果依赖于下游作业?我的意思是,如果三个下游作业获得稳定的构建但其中一个得到不稳定的构建,则上游构建结果应该是不稳定的。 / p>
答案 0 :(得分:6)
我找到了解决方案。有一个名为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);
}
您可以在我的blog here条目中找到更多信息。
答案 1 :(得分:5)
可能适合您的另一个选项是使用参数化构建插件。它允许您将4个“下游”构建作为构建步骤。这意味着如果有任何子构建,您的“父”构建可能会失败。
当我们想要隐藏build-pipeline插件视图的复杂性时,我们会这样做。
答案 2 :(得分:1)
我们遇到了类似的问题,并没有找到完美的解决方案。部分解决方案是使用Promoted Builds Plugin。为上游项目配置它以在下游作业完成时包含一些可视指示符。它不会更改整体作业状态,但会在下游作业失败时通知我们。
答案 3 :(得分:1)
也许这个插件可以满足您的需求?
答案 4 :(得分:0)
我的项目的工作是创建一个新工作,这是下游流的下游。我们在所有三个原始下游作业中设置了构建步骤“在其他项目上触发参数化构建”。解析到新作业的参数取决于三个作业的状态,参数将导致新作业做出相应的反应。
1。创建包含一个简单类和一个简单测试的新作业。两个参数都依赖,即如果参数"status" = fail
类失败,类通过但参数"status"=unstable
等测试失败,等等
2. 在具有相关配置的三个原始下游作业的其他项目上设置触发器参数化构建。
3. 相应地设置新作业的通知。