Jenkins折叠构建队列中的挂起作业

ujv3wf0j  于 2023-03-17  发布在  Jenkins
关注(0)|答案(1)|浏览(157)

我希望将多个待处理作业合并为一个待处理作业。
例如,如果两个用户“Build with Parameters”,而执行者很忙碌,那么同一个项目只需要创建一个作业。类似于源代码管理插件如何赶上头部,多个提交被卷到一个作业中。
加分如果我们不能崩溃的工作,如果参数不同。
有什么想法吗?
我正在考虑用执行工作的do_project之类的东西 Package 作业,与之交互的项目用户将检查do_project的队列并确定是否应该提交新作业。

k2fxgqgv

k2fxgqgv1#

听起来您想要的是在队列中有多个构建时实际中止所有以前的构建并只运行最新的构建。
已经有一个名为disableConcurrentBuilds的不错的选项,它不允许管道的并发执行,并且从管道的2.42版本开始:作业插件,一个新的参数被添加到这个函数称为abortPrevious-它允许(当设置为true)中止所有正在运行的构建,并开始新的构建。
声明性管道中的用法:

pipeline {
    options {
        disableConcurrentBuilds(abortPrevious: true)
    }

   [...]
}

脚本化管道中的用法:

node {
    properties([disableConcurrentBuilds(abortPrevious: true)])

    [...]
}

此配置将帮助您实现您的目标-每次新构建开始时,并且有多个构建正在运行,它将取消所有以前的构建。
您也可以为这个配置disableConcurrentBuilds(abortPrevious: params.ABORT_PREVIOUS)使用一个参数,但是如果作为false传递,它仍然会阻止并发执行。

相关问题