8

我在上游有一个执行 4 个下游作业的作业。

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

上游作业,因为它成功完成,得到一个蓝色球(构建结果=稳定),但即使下游作业失败(红色球)或不稳定(黄色球),上游作业仍保持其蓝色。

无论如何,上游作业的结果是否依赖于下游作业?我的意思是,如果三个下游作业获得稳定的构建,但其中一个获得不稳定的构建,则上游构建结果应该是不稳定的。

4

5 回答 5

6

我找到了解决方案。有一个名为 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);
}

您可以在我的博客条目中找到更多信息。

于 2011-06-14T17:25:01.207 回答
5

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

当我们想要隐藏构建管道插件视图的复杂性时,我们会这样做。

于 2011-05-31T05:24:08.773 回答
1

我们遇到了类似的问题,还没有找到完美的解决方案。部分解决方案是使用Promoted Builds Plugin。为您的上游项目配置它以在下游作业完成时包含一些视觉指示器。它不会改变整体作业状态,但会在下游作业失败时通知我们。

于 2011-05-27T15:44:20.253 回答
1

也许这个插件可以满足您的需求?

Jenkins 先决条件构建步骤插件

于 2011-07-08T20:12:54.537 回答
0

我的项目的解决方法是创建一个新工作,这是下游的下游。我们在所有三个原始下游作业中设置了一个后期构建步骤“触发其他项目的参数化构建”。解析到新作业的参数取决于三个作业的状态,该参数将导致新作业做出相应的反应。

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

2.为三个原始的下游作业设置Trigger parameterized build on other projects,并进行相关配置。

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

于 2011-06-01T11:19:35.307 回答