Jenkins 使用作业DSL禁用多分支管道作业上的并发生成

Jenkins 使用作业DSL禁用多分支管道作业上的并发生成,jenkins,jenkins-job-dsl,multibranch-pipeline,Jenkins,Jenkins Job Dsl,Multibranch Pipeline,我试图使用作业DSL创建多分支管道作业,但我想禁用每个分支上的并发构建。我尝试了下面的代码片段,但没有成功,“不允许并发构建”在新分支上仍然处于未选中状态 multibranchPipelineJob("${FOLDER_NAME}/${JOB_NAME}") { branchSources { git { remote("https://gitlab.com/${REPO_PATH}") credentialsId('gi

我试图使用作业DSL创建多分支管道作业,但我想禁用每个分支上的并发构建。我尝试了下面的代码片段,但没有成功,“不允许并发构建”在新分支上仍然处于未选中状态

multibranchPipelineJob("${FOLDER_NAME}/${JOB_NAME}") {
    branchSources {
        git {
            remote("https://gitlab.com/${REPO_PATH}")
            credentialsId('gitlab_credentials')
            includes('*')
        }
    }
    configure { 
        def factory = it / factory(class: 'com.cloudbees.workflow.multibranch.CustomBranchProjectFactory')
        factory << disableConcurrentBuilds()
    }
    orphanedItemStrategy {
        discardOldItems {
            numToKeep(1)
        }
    }
}

我也有这种需要。我注意到,在我的jenkins实例中,jobDSL api文档表明多分支管道作业中不支持disableConcurrentBuilds()属性

我刚刚回到他的文章中,他指出通过jobDSL的多分支管道有一个速率限制特性

由于这个Jenkins错误,我的团队刚刚遇到了一个问题,pollSCM触发了疯狂的运行,因此我在jobDSL中实现了这个问题,以使我们的工作更加健壮。和您一样,我也希望“disableConcurrentBuilds”可以在管道中完成,但由于速率限制似乎是目前多分支管道可用的唯一解决方案,因此我尝试将其应用到我们的JobDSL中:

  strategy {
    defaultBranchPropertyStrategy {
      props {
        rateLimitBranchProperty {
          count(2)
          durationName("hour")
        }
      }
    }
  }
这当然是一个可怕的解决方法,因为它在jobDSL中产生了一个令人讨厌的依赖,即需要知道构建需要多长时间,但我愿意接受这个替代方案,而不是在数百个分支上将
disableConcurrentBuilds
选项推送到Jenkins文件

multibranchPipelineJob("${FOLDER_NAME}/${JOB_NAME}") {
    branchSources {
        git {
            remote("https://gitlab.com/${REPO_PATH}")
            credentialsId('gitlab_credentials')
            includes('*')
        }
    }
    configure { 
        def factory = it / factory(class: 'com.cloudbees.workflow.multibranch.CustomBranchProjectFactory')
        factory << disableConcurrentBuilds()
    }
    orphanedItemStrategy {
        discardOldItems {
            numToKeep(1)
        }
    }
}
它在实现目标方面也几乎没有什么效果,因为我们希望允许跨分支的并发构建,但希望防止单个分支作业被构建得“太快”

我们应该检查Jenkins中是否有此功能请求(您的原始请求)

在我的jenkins实例(v2.222.3,管道:multibranch v2.22)中,此处描述了将其应用于“所有分支”的设置:

https:///plugin/job-dsl/api-viewer/index.html#path/multibranchPipelineJob-分支资源分支资源策略所有分支相同的道具费率限制

以下是将其应用于特定分支的步骤:

https:///plugin/job-dsl/api-viewer/index.html#path/multibranchPipelineJob-branchSources branchSource策略名称BranchesDifferent defaultProperties rateLimit


编辑:还想链接到一个相关的詹金斯问题。

我也有这个需要。我注意到在我的jenkins实例中,jobDSL api文档表明多分支管道作业中不支持
disableConcurrentBuilds()
属性。我还想向大家介绍这一相关讨论:
  strategy {
    defaultBranchPropertyStrategy {
      props {
        rateLimitBranchProperty {
          count(2)
          durationName("hour")
        }
      }
    }
  }