Jenkins - 仅在具有2个以上执行者的节点上运行作业

时间:2017-09-30 03:06:52

标签: jenkins jenkins-plugins

我们有许多运行父作业和多个子作业的多作业。父进行一些预处理,然后开始第一个子作业。 例如:

  • 父 - 检查git repos并准备代码
    • 构建代码
    • 单元测试
    • 上传到HockeyApp

由于父操作正在运行子作业的整个时间,因此该过程从一个执行程序开始,然后在子作业启动时选择一秒。放下它然后在下一次启动时将其取回。

我们有4个节点,每个节点有3-4个执行器。我们也没有网络驱动器,因此子作业必须与父级保持在同一个执行器上,以避免必须在作业之间传递整个工作区。

问题在于,如果一个作业正在运行并且有两个执行程序,那么另一个作业将被启动,然后另一个正好启动,那么他们就有可能最终在同一个节点上运行发生在下面:

节点1

  • 执行人1 - Parent1
  • 执行人2 - Child1
  • 执行人3 - Parent2
  • 执行人4 - Parent3

现在,Parent2和Parent3只是坐在那里等待一个免费的执行者。最终,Parent1上的Child作业结束,然后2 r 3抓住执行者并且所有人都在为它而战。

有没有办法告诉Jenkins只在至少有2个执行者免费的节点上启动那个父级?我知道,如果有人能够足够快地找到足够多的工作,我们仍然可能会遇到人员问题,但这会大大减少这个问题。

1 个答案:

答案 0 :(得分:1)

我认为你可以使用 - https://wiki.jenkins.io/display/JENKINS/Heavy+Job+Plugin,并为每一步定义你需要的免费执行者数量。

相关问题