Jenkins/Hudson 上游任务无法获取下游任务的“球形”状态颜色

8

我有一个上游工作,执行4个下游工作。

如果上游工作成功完成,则下游工作开始执行。

由于上游工作成功完成,它会得到一个蓝色的小球(构建结果=稳定),但是即使下游工作失败(红球)或不稳定(黄球),上游工作仍然保持其蓝色。

有没有办法让上游工作的结果取决于下游工作?也就是说,如果三个下游工作都得到了稳定的构建,但其中一个得到了不稳定的构建,那么上游构建结果应该是不稳定的。


1
这种方法非常有用(请参见最高评分的解决方案):https://dev59.com/xW035IYBdhLWcg3wVebn - vetalok
5个回答

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);
}

你可以在我的博客文章中找到更多关于获取上游任务整体状态从下游任务的信息。


5

另一个可能适合您的选择是使用参数化构建插件。它允许您将4个“下游”构建作为构建步骤。这意味着如果任何子构建失败,您的“父”构建也会失败。

当我们想要在构建流水线插件视图中隐藏复杂性时,我们会这样做。


3
你好,谢谢你的回答,但是,你能否再解释一下你的意思?我不明白如何使用这个插件来使得父任务在子任务失败时也会失败。谢谢! - victorgp

1
我们曾经遇到过类似的问题,但并没有找到完美的解决方案。一个部分的解决方案是使用Promoted Builds Plugin插件。将其配置到上游项目中,在下游任务完成时包含一些可视化指示器。它不会改变整个任务的状态,但是在下游任务失败时会通知我们。

1

0

我的项目的解决方法是创建一个新的作业,它是下游作业的下游。我们在原始的三个下游作业中设置了一个后构建步骤"触发参数化构建其他项目"。传递到新作业中的参数取决于三个作业的状态,并且参数将导致新作业相应地做出反应。

1. 创建一个包含一个简单类和一个简单测试的新作业。两个参数都是依赖的,即如果参数"status"=fail,则类失败;如果参数"status"=unstable,则类通过但测试失败等。

2. 对具有相关配置的三个原始下游作业设置"触发参数化构建其他项目"。

3. 相应地设置新作业的通知。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接