如何在 Jenkins 声明式管道中使用节流并发构建
How to use Throttle Concurrent Builds in Jenkins Declarative Pipelines
我有 Jenkins 声明性管道,用于触发数据库刷新的几个不同的回购协议,以及依赖于数据库的单元测试。这些 Jenkins 作业是由 GitHub 中的拉取请求触发的。
为避免资源冲突,我需要同时 运行 阻止这些作业——在每个项目内和跨项目。
"Throttle Concurrent Builds" 插件似乎是为此而构建的。
我已经安装了插件并配置了一个类别,如下所示:
并且我将 "throttle" 选项添加到应该限制构建的存储库之一的 Jenkinsfile 中:
pipeline {
agent any
options {
throttle(['ci_database_build'])
}
stages {
stage('Build') {
parallel {
stage('Build source') {
steps {
// etc etc...
但是,这似乎并不能阻止同时执行 2 个作业。作为证据,这里有 2 个作业(都包含上述 Jenkisfile 更改)同时执行:
我错过了什么?
选项块中的以下内容应该有效
options {
throttleJobProperty(
categories: ['ci_database_build'],
throttleEnabled: true,
throttleOption: 'category',
)
}
完整的语法可以在这里看到:https://github.com/jenkinsci/throttle-concurrent-builds-plugin/pull/68)
我有 Jenkins 声明性管道,用于触发数据库刷新的几个不同的回购协议,以及依赖于数据库的单元测试。这些 Jenkins 作业是由 GitHub 中的拉取请求触发的。
为避免资源冲突,我需要同时 运行 阻止这些作业——在每个项目内和跨项目。
"Throttle Concurrent Builds" 插件似乎是为此而构建的。
我已经安装了插件并配置了一个类别,如下所示:
并且我将 "throttle" 选项添加到应该限制构建的存储库之一的 Jenkinsfile 中:
pipeline {
agent any
options {
throttle(['ci_database_build'])
}
stages {
stage('Build') {
parallel {
stage('Build source') {
steps {
// etc etc...
但是,这似乎并不能阻止同时执行 2 个作业。作为证据,这里有 2 个作业(都包含上述 Jenkisfile 更改)同时执行:
我错过了什么?
选项块中的以下内容应该有效
options {
throttleJobProperty(
categories: ['ci_database_build'],
throttleEnabled: true,
throttleOption: 'category',
)
}
完整的语法可以在这里看到:https://github.com/jenkinsci/throttle-concurrent-builds-plugin/pull/68)