You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins:如何为特定下游触发器预留验收测试构建资源?

解决方案说明

原生的Jenkins Throttle Concurrent Builds插件无法直接实现为特定触发源(job1)硬预留构建名额的需求,但可以通过以下几种替代方案达成类似效果:

方案一:拆分验收测试(AT)作业(推荐)

将原AT作业拆分为两个独立作业:

  • 专属job1的AT作业:配置限流参数如下,保证job1触发的构建随时有1个专属名额:
    throttleJobProperty(
        maxConcurrentPerNode: 0,
        maxConcurrentTotal: 1,
        paramsToUseForLimit: '',
        throttleEnabled: true,
        throttleOption: 'project'
    )
    
  • 通用AT作业:配置限流参数使用剩余的4个名额,供job2/job3等其他作业触发:
    throttleJobProperty(
        maxConcurrentPerNode: 0,
        maxConcurrentTotal: 4,
        paramsToUseForLimit: '',
        throttleEnabled: true,
        throttleOption: 'project'
    )
    

之后调整触发器配置:让job1只触发专属AT作业,其他作业触发通用AT作业。这种方案逻辑清晰,易于维护,能完全保证job1的构建无需排队(只要专属作业的名额空闲)。

方案二:结合优先级插件实现优先调度

如果不想拆分作业,可以安装Priority Sorter Plugin,通过优先级调度间接实现job1触发构建的优先执行:

  1. 保留原AT作业的限流配置(maxConcurrentTotal:5)
  2. 给AT作业添加优先级排序规则:识别由job1触发的构建(可通过构建参数、触发源标识判断),将其优先级设为最高级别
  3. 当队列中存在job1触发的AT构建时,Jenkins会优先为其分配空闲的并发名额,确保它能优先于其他排队的构建启动

这种方案无法硬预留名额(当5个名额全被其他构建占用时,job1的构建仍需等待),但能最大程度保证job1的构建无需长时间排队。

方案三:动态调整并发数(不推荐)

通过Jenkins脚本或自定义逻辑,在job1触发AT构建时临时调整限流参数:

  • 当检测到job1触发的AT进入队列,调用Jenkins API将AT作业的maxConcurrentTotal临时改为6
  • 待job1的AT构建启动后,再将参数改回5

这种方案实现复杂,容易出现并发冲突或参数异常,仅在无法拆分作业且必须硬预留名额的极端场景下考虑。

内容的提问来源于stack exchange,提问作者Frendom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:27:20