我们有许多从事父工作和多个子工作的多重工作。父级进行一些预处理,然后开始第一个子作业。示例:
由于父项在子作业运行的整个过程中都在运行,因此该过程从一个执行程序开始,然后在子作业开始时再执行一次。删除它,然后在下一次启动时将其备份。
我们有4个节点,每个节点上都有3-4个执行器。我们也没有网络驱动器,因此子作业必须与父作业留在同一执行程序上,以避免在作业之间传递整个工作空间。
问题是,如果一项作业正在运行并且有两个执行程序,然后另一个作业开始,然后又是另一个执行程序,那么它们很可能全部都落在同一个节点上,并且发生以下类似情况:
节点1
现在Parent2和Parent3只是围坐在旁边等待免费的执行者。最终,Parent1上的Child工作结束,然后2 r 3抓住执行者,所有人都为此而战。
是否有办法告诉Jenkins仅在至少有2个执行者自由的节点上启动该父节点?我知道如果有人足够快地开始了足够的工作,我们仍然可能会遇到人为问题,但这将大大减少它的机会。
我认为您可以使用-https://wiki.jenkins.io/display/JENKINS/Heavy+Job+Plugin,并为每个步骤定义所需的免费执行程序数量。