【发布时间】:2016-08-23 10:56:27
【问题描述】:
我们有一个 Jenkins 服务器,它正在运行 20 到 30 个作业。
由于构建过程相当复杂,我们将实际构建分解为 1 个子构建,其中一些可以同时运行,其他则必须遵循之前的构建步骤。因此,我们将每个构建步骤分为 3 组,在构建进行时会阻塞。
例如:
Main Build : GroupA : Builds A1, A2 & A3
: GroupB : Builds B1, B2 & B3
: GroupC : Builds C1, C2, C3, C4, C5 & C6
: GroupD : HW_Tests T1, T2, T3, T4 & T5
Builds B1, B2 & B3 rely on the output from A1, A2, A3 etc
由于几乎 24/7 运行构建和测试,我发现很难安排 Jenkins Master 的重启。选择“准备关闭”将意味着新作业排队,但它总是会阻止正在运行的作业,因为使用我上面的示例,如果 GroupB 处于活动状态,构建 C1、C2 等也将排队,主构建将被屏蔽。
作为一种解决方法,我想在所有正在运行的作业完成之前禁用服务器上的 SCM 轮询。这将防止新作业触发,但也允许正在运行的作业完成。然后我可以重新启动 Jenkins 并重新启用 SCM 轮询,从而恢复正常服务。
我们使用的 SCM 是 Perforce。
我无法找到任何表明上述可能的地方,但是,我确信它在 System Groovy 中一定是可行的......只是不确定如何。请问这里有人有什么想法吗?
非常感谢
【问题讨论】:
标签: jenkins groovy version-control