如何通过脚本在Jenkins中添加多个构建任务至队列?UUID方案无效
解决Jenkins仅允许一个运行中任务和一个排队任务的问题
你的问题核心是Jenkins的任务并发或队列配置限制导致的,和添加的随机UUID参数无关,以下是具体排查和解决步骤:
1. 开启任务的并发构建权限
进入目标Jenkins任务的配置页面:
- 找到高级项目选项(或构建触发器附近的配置项),勾选允许并发构建(Allow concurrent builds)
- 保存配置后,再次用脚本触发任务,即可支持多任务排队或并发运行
2. 调整全局队列的最大限制
进入Manage Jenkins -> Configure System:
- 定位到Queue(队列)配置区域,查看
Maximum number of buildable items(可构建项目的最大数量) - 如果该值设为1,会强制限制仅1个排队任务,将其改为更大数值(比如10)或留空(无限制),保存后重新测试
3. 关闭参数化构建的重复限制
进入任务配置的参数化构建过程:
- 检查是否勾选了Do not allow concurrent builds if the same parameters are used(参数相同时禁止并发构建)
- 即使生成了随机UUID,也要确保该选项未被勾选;同时可以在Python脚本中打印UUID,验证每次生成的参数确实唯一
4. 验证API触发的正确性
如果以上配置都没问题,尝试用标准Jenkins API触发命令(规避插件可能的限制):
# 先获取CSRF crumb(避免触发失败) CRUMB=$(curl -s 'http://[jenkins-url]/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') # 触发构建,生成随机UUID作为id参数 curl -X POST -H "$CRUMB" "http://[jenkins-url]/job/[folder]/job/[job-name]/buildWithParameters?token=[token]&user=[username]&branch=[branch]&id=$(uuidgen | tr -d '-')"
多次执行该命令,测试是否能生成多个排队任务
额外注意事项
- 如果Jenkins节点只有1个执行器,同一时间只能运行1个任务,但排队任务数量不受此限制
- 检查是否安装了Throttle Concurrent Builds这类限制并发的插件,如有则需调整插件配置
内容的提问来源于stack exchange,提问作者Narmondur
相关产品推荐
相关产品推荐

