如何以某种预定义的顺序在Hudson中运行作业?

时间:2010-02-15 15:51:26

标签: continuous-integration hudson

有4个职位:

Build1  
Build2  
Test1  
Test2

Build1 Build2 可以同时启动 只有在 Build1 Build2 完成时才应启动 Test1
只有在 Tes1 完成时才应启动 Tes2 此外,我希望能够分别开始所有这些工作 有没有办法根据这些规则设置工作?

5 个答案:

答案 0 :(得分:4)

创建新作业时,通常可以指定必须构建哪个上游项目才能开始此作业。

此选项位于构建触发器 - >在创建/修改作业时构建其他项目后构建

答案 1 :(得分:2)

我认为你有几种选择。我的假设是,我们正在谈论长时间运行的工作,否则我只是将它们串在一起作为一个怪物工作(在一个工作中的几个构建步骤)并创建单独的工作来单独运行它们。

如上所述,对于长期工作,请查看join plugin。作为一般的FYI,有一个页面解释了为什么要将测试作业与构建作业分开。请参阅here

答案 2 :(得分:1)

“Promoted Builds Plugin”可以是一个很好的解决方案:您可以配置主作业“Build”,除了启动2个下游构建“Build1,Build2”(在构建后的操作中)之外什么都不做。 然后,您必须添加一个促销流程“当下面的下游项目成功构建时”选择“Build1,Build2”,并使用相关的下游构建操作“Test1”。 如果“Build1”和“Build2”构建成功(状态为STABLE),则“Build”将被提升,“Test1”将被排队。 最后,您将Test2作为Test1的构建后操作触发。

但是你必须要知道,很多“Build”实例都被排队,你不能依赖lastSuccessful构建永久链接(当“Test1”调用时,下一个“Build1”或“Build2”可能已经构建了第一个“Build”将弹出队列),你将不得不设计一种方法来跟踪你正在测试的构建版本。

参数化触发器插件可以帮助解决这个问题:例如,您可以将上游构建的id作为参数传递。

答案 3 :(得分:0)

我正在运行Hudson版本1.346。

您可以在“构建触发器”下查看“构建其他项目后构建”。

它说“可以指定多个项目,如'abc,def'”

所以你应该能够在Test1的配置中为该字段添加'Build1,Build2'。

答案 4 :(得分:0)

你可以保留你的Test1& Test2作为单独的作业,而不是构建的一部分。

当Build1和Build2完成时,Test1可以作为下游构建启动。 Test2可以是Test1的下游作业。