如何限制并行运行的某些管道的数量?

war*_*que 6 jenkins jenkins-pipeline

我想允许并行运行以下管道,但由于资源有限,我必须限制并行运行的最大数量。

pipeline {

  agent { label "$JENKINS_AGENT" }
  parameters { .. }
  options { .. }

  stages {
    stage('Checkout') { .. }
    stage('Config') { .. }
    stage('Deploy') { .. }
    stage('Test') { .. }
  }

  post {
    failure { .. }
    success { .. }
    always {
      cleanup()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

例如,如果我仅限于 3 个部署,我该如何实现这一目标?

编辑:我目前已将以下内容添加到我的 jenkinsfile 中。似乎有效,但我不确定这是否是正确的方法。(使用Throttle 并发构建插件

properties([
  [
    $class: 'ThrottleJobProperty',
    categories: ['parallel_pipeline'],
    limitOneJobWithMatchingParams: false,
    maxConcurrentPerNode: 3,
    maxConcurrentTotal: 3,
    paramsToUseForLimit: '',
    throttleEnabled: true,
    throttleOption: 'project'
  ],
])
Run Code Online (Sandbox Code Playgroud)

Nic*_*Ben 0

您可能会发现这些插件很有用:

  1. Throttle 并发构建插件
  2. 可锁定资源插件

  • 否决是因为这些插件都不能限制管道“并行”步骤的并发执行分支的数量 - 这些是为了限制构建级别的并发性,而不是管道步骤级别的并发性。它们可能恰好对 OP 起作用,因为 OP 在并行分支内运行管道“阶段”,这在某些方面表现得像独立构建。这些插件在通用管道“并行”情况下不起作用。 (4认同)