我创建了一个名为JobFoo的Job,它接受参数sleep。我有 3 个节点,nodeA、nodeB、nodeC,并且所有节点都与 Lable JobFooRunner 相关联。 任何节点一次只能运行一个JobFoo。 因此,如果我同时使用参数(sleep=1,2,3,4)触发JobFoo 4次。然后 3 个作业应该在不同的节点上并行运行,第 4 个作业应该在队列中。每当任何节点空闲时,它将运行最后第四个作业。
我该如何实现这一点,我尝试过“节点和标签参数插件”,但它总共运行了 4*3=12 个作业。
老实说,你并不清楚你真正想要实现什么。 默认情况下,当您对多个构建进行排队并且管道代码中没有定义
disableConcurrentBuilds
选项时,Jenkins 将执行您所描述的操作。
如果您想要更多容量来并行运行构建,您可以增加每个节点上的执行器数量。但请注意后果 - 关于性能和稳定性,因为构建可以同时使用相同的资源,例如缓存。
matrix
功能,或在 parallel
块中定义 3 个阶段。后者也可以动态完成。
如果您想将每个作业的最大并发构建数限制为 3,您可以定义一个 可锁定资源,最大数量为 3,并在管道中定义
lock
该资源。