Jenkins 使用作业DSL禁用多分支管道作业上的并发生成
我试图使用作业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
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")
}
}
}
}