我们有一个 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
Run Code Online (Sandbox Code Playgroud)
由于构建和测试几乎 24/7 运行,我发现很难安排 Jenkins Master 的重启。选择“准备关闭”将意味着新作业排队,但它总是会阻止正在运行的作业,因为使用我上面的示例,如果 GroupB 处于活动状态,构建 C1、C2 等也将排队,并且主构建将被封锁。
作为一种解决方法,我想在所有正在运行的作业完成之前禁用服务器上的 SCM 轮询。这将防止触发新作业,但也允许正在运行的作业完成。然后我可以重新启动 Jenkins …