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

如何限制Azure Pipelines中并发运行的构建数量?

如何限制Azure Pipelines中PR构建的并发数量?

你提到的困惑我完全理解——Azure Pipelines里的parallel jobs确实是指单个流水线内的多作业并行执行,和你想要控制的多个PR构建同时运行(也就是并发流水线实例)根本不是一回事。下面给你几个实用的方案,帮你实现同一时间仅运行一个PR构建的需求:

方法1:使用YAML的concurrency关键字(推荐)

这是最直接的方式,你可以在流水线YAML里添加concurrency配置,把所有PR触发的构建归到同一个并发组,强制组内同时只能运行一个实例。

示例YAML配置:

# 仅开启PR触发,关闭分支自动触发(根据你的实际需求调整)
trigger: none
pr:
  branches:
    include:
      - main
      - develop

# 定义PR构建专属的并发组
concurrency:
  group: pr-build-concurrency-group
  cancelInProgress: false  # 设为true的话,新PR会取消正在运行的旧PR构建,按需选择

jobs:
- job: PR_Build
  displayName: 'PR 构建任务'
  steps:
    - script: echo "正在执行PR构建..."
      displayName: '运行核心构建脚本'

简单解释:

  • concurrency.group:给所有PR构建分配统一组名,Azure Pipelines会自动管控这个组的并发数,同一时间只允许一个实例运行,其他PR构建会进入排队状态。
  • cancelInProgress:如果你的需求是优先处理最新的PR,就设为true;如果希望所有PR按提交顺序依次执行,保持false即可。

方法2:使用环境(Environment)的并发限制

如果你需要更精细化的管控(比如后续要加审批、检查规则),可以创建一个专门的环境,通过环境配置限制并发:

  1. 在Azure DevOps项目中,进入Pipelines -> Environments,点击「Create environment」创建一个环境(比如命名为PR-Build-Env)。
  2. 进入该环境的设置页,找到「Deployment concurrency」,将「Maximum number of parallel deployments」设为1。
  3. 在流水线YAML里,把PR构建作业改为部署作业并引用这个环境:
pr:
  branches:
    include:
      - main

jobs:
- deployment: PR_Build_With_Env
  displayName: 'PR 构建(环境限制版)'
  environment: PR-Build-Env  # 引用刚才创建的环境
  strategy:
    runOnce:
      deploy:
        steps:
          - script: echo "正在执行PR构建..."
            displayName: '运行核心构建脚本'

这种方式的优势是:环境配置可以在UI上直接修改,无需改动YAML,还能额外添加审批、安全检查等规则。

方法3:项目级流水线并发限制(不推荐,粒度太粗)

如果你想限制整个项目内所有流水线的并发数量,可以进入Project Settings -> Pipelines -> Settings,找到「Maximum number of parallel jobs per pipeline」。但注意,这个设置是针对单个流水线内的并行作业数,不是你要的PR并发构建数,除非你的项目只跑PR构建,否则不建议用这个方案。

最后补充个小技巧:如果你的流水线同时支持PR触发和分支提交触发(比如main分支代码提交),可以用变量动态区分并发组,避免互相影响:

concurrency:
  group: ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:pr-build-group${{ else }}:branch-build-group
  cancelInProgress: false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:53:28