如何限制Jenkins并发多分支管道构建?

时间:2017-01-05 19:01:36

标签: jenkins groovy concurrency jenkins-pipeline

我正在考虑将并发构建的数量限制为Jenkins中的特定数字,利用多分支管道工作流程,但尚未找到在文档或Google中执行此操作的任何好方法。

有些文档说这可以使用Jenkins文件的stage步骤中的并发来完成,但我也read elsewhere这是一种弃用的方法。

看起来最近something released通过Job Properties来限制并发性,但我无法找到它的文档,而且我无法遵循代码。我发现PR唯一能显示以下内容:

properties([concurrentBuilds(false)])

但是我无法正常工作。

是否有人知道或有一个很好的例子来说明如何限制给定的多分支项目的并发构建数量?也许是一个Jenkinsfile片段,展示了如何限制或限制多分支并发构建的数量?

3 个答案:

答案 0 :(得分:42)

找到我要找的东西。您可以使用Jenkins文件中的以下块来限制并发构建。

node {
  // This limits build concurrency to 1 per branch
  properties([disableConcurrentBuilds()])

  //do stuff
  ...
}

使用声明性语法可以实现同样的目的:

pipeline {
    options {
        disableConcurrentBuilds()
    }
}

答案 1 :(得分:4)

由于@VadminKotov表示可以使用jenkins声明性管道禁用并发构建:

pipeline {
    agent any
    options { disableConcurrentBuilds() }
    stages {
        stage('Build') {
            steps {
                echo 'Hello Jenkins Declarative Pipeline'
            }
        }
    }
}

答案 2 :(得分:4)

使用Lockable Resources插件(GitHub)可以限制并发构建或阶段。我始终使用这种机制来确保不会同时执行任何发布/发布步骤,而可以同时构建正常阶段。

echo 'Starting'
lock('my-resource-name') {
  echo 'Do something here that requires unique access to the resource'
  // any other build will wait until the one locking the resource leaves this block
}
echo 'Finish'