如何在Jenkins声明式流水线中限制Matrix配置的并行执行数量
1. matrixOptions参数的正确传值方式
你调试后得到的写法是正确的,matrixOptions需要传入hudson.plugins.throttleconcurrents.ThrottleMatrixProjectOptions类的实例,构造方法的两个布尔参数依次对应:
- 第一个参数:
throttleMatrixBuilds:是否限制Matrix父任务本身的并发数 - 第二个参数:
throttleMatrixConfigurations:是否限制Matrix生成的子配置项的并发数
你传入的new hudson.plugins.throttleconcurrents.ThrottleMatrixProjectOptions(false, true)符合你只限制子配置并发的需求,完整的基础配置参考如下:
pipeline { agent any options { throttleJobProperty( categories: ['ForTestMatrix'], throttleEnabled: true, throttleOption: 'category', matrixOptions: new hudson.plugins.throttleconcurrents.ThrottleMatrixProjectOptions(false, true) ) } stages { stage('Test Matrix') { matrix { axes { axis { name 'Test' values 'Example1','Example2','Example3','Example4','Example5','Example6' } } stages { stage('Run Test') { steps { echo "Running test for ${Test}" sleep 10 } } } } } } }
2. 限流不生效的排查方案
按优先级从高到低检查以下配置:
- 分类阈值设置错误:检查你创建的
ForTestMatrix分类的全局最大并发数是否设置为5,注意不要和单节点最大并发数混淆,只有全局最大并发数会限制所有节点上的子配置总数量。 - 插件版本过低:2.12版本之前的Throttle Concurrent Builds插件对声明式流水线的Matrix语法支持存在bug,先升级插件到最新稳定版再测试。
- 测试用例阈值覆盖问题:你示例中的Matrix一共只有3个配置项,如果你设置的阈值≥3,自然会全部同时启动,测试时可以先把阈值调整为1,验证是否会串行执行即可判断限流逻辑是否生效。
- 其他并发配置冲突:如果你的Job本身在配置页设置了全局最大并发构建数,或者勾选了允许并发构建的相关选项,可能会和限流插件的配置产生冲突,暂时关闭这些自带的并发限制后再测试即可。
内容的提问来源于stack exchange,提问作者Relict
相关产品推荐
相关产品推荐

