如何在Jenkins

时间:2015-07-31 11:51:43

标签: jenkins

我在Jenkins有一个CI任务,可以调查scm并构建我的项目。还有几个自动测试任务:

  • 自动测试项目A
  • 自动测试项目B
  • 自动投影项目C

C取决于B,它取决于A。

所以,我希望CI任务调用自动测试A - > B - > C.但是如果完成,任务必须不能在C之前重新开始。假设,在执行A,B期间,C CI任务执行了3次(由于3次推送到scm)。在这种情况下,对于所有三次推送,必须仅启动一次自动测试流程。

如何使用Jenkins设置此功能?我使用触发器插件,但它每次都启动下游任务A,B,C(甚至之前的自动测试流程尚未完成),这是不可取的。

2 个答案:

答案 0 :(得分:1)

在项目的高级配置下有两个选项:

  • 上游项目建设时的阻止构建
  • 下游项目建设时的阻止构建

对于项目C,如果在上游项目运行时阻止其构建,它将一直运行直到A和B完成。

对于项目A,如果在下游项目运行时阻止其构建,它将等待B和C在其运行之前完成。

答案 1 :(得分:0)

在作业A配置中设置“限制可以运行此作业的位置”复选框,并指定从站的名称。

然后检查名为'Throttle concurrent builds'的无线电标志(您需要https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin才能这样做)并将整体和每个节点的最大版本设置为1.

这将确保只有一个作业A的实例将在给定的时刻运行。其余的触发作业A将保留在队列中,并且仅在前一个完成后才开始。