我在上游有一个执行 4 个下游作业的作业。
如果上游作业成功完成,下游作业开始执行。
上游作业,因为它成功完成,得到一个蓝色球(构建结果=稳定),但即使下游作业失败(红色球)或不稳定(黄色球),上游作业仍保持其蓝色。
无论如何,上游作业的结果是否依赖于下游作业?我的意思是,如果三个下游作业获得稳定的构建,但其中一个获得不稳定的构建,则上游构建结果应该是不稳定的。
我在上游有一个执行 4 个下游作业的作业。
如果上游作业成功完成,下游作业开始执行。
上游作业,因为它成功完成,得到一个蓝色球(构建结果=稳定),但即使下游作业失败(红色球)或不稳定(黄色球),上游作业仍保持其蓝色。
无论如何,上游作业的结果是否依赖于下游作业?我的意思是,如果三个下游作业获得稳定的构建,但其中一个获得不稳定的构建,则上游构建结果应该是不稳定的。
我找到了解决方案。有一个名为 Groovy Postbuild pluging 的插件可让您在后期构建阶段执行 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 Plugin。为您的上游项目配置它以在下游作业完成时包含一些视觉指示器。它不会改变整体作业状态,但会在下游作业失败时通知我们。
也许这个插件可以满足您的需求?
我的项目的解决方法是创建一个新工作,这是下游的下游。我们在所有三个原始下游作业中设置了一个后期构建步骤“触发其他项目的参数化构建”。解析到新作业的参数取决于三个作业的状态,该参数将导致新作业做出相应的反应。
1.创建一个包含一个简单类和一个简单测试的新作业。两个参数都依赖,即如果参数类失败"status" = fail
,类通过但如果参数测试失败"status"=unstable
等。
2.为三个原始的下游作业设置Trigger parameterized build on other projects,并进行相关配置。
3.相应地设置新工作的通知。