2011-05-26 73 views
8

我有一个上游作业,执行4个下游作业。Jenkins/Hudson上游作业没有获得下游作业的状态“球”颜色

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

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

有没有办法得到上游工作依赖下游工作的结果?我的意思是,如果三个下游工作得到稳定的构建,但其中一个得到不稳定的构建,则上游构建结果应该不稳定。

+1

这种方法是非常有用的(见顶部额定溶液): HTTP://计算器。com/questions/5487104/how-do-i-trigger-another-job-from-hudson-as-a-pre-build-step – vetalok 2012-06-25 11:49:40

回答

6

我找到了解决方案。有一个名为Groovy Postbuild plugin的插件,可以在后期构建阶段执行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

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

5

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

我们这样做是为了隐藏build-pipeline插件视图的复杂性。

+3

你好,非常感谢你的回答,但是,你能解释我多一点吗?你的意思是?,我看不到如果下游作业失败,我该如何使用该插件使父项失败。谢谢! – victorgp 2011-05-31 07:26:49

0

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

1.创建一个新的工作,其中包含一个简单的类和一个简单的测试。这两个参数dependens,如果参数"status" = fail,类通不过测试失败,即一流的失败,如果在其他项目上与相关配置三个原始下游的工作参数"status"=unstable

2.设置触发参数构建。

3.相应地设置新任务的通知。

相关问题