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

Azure Pipelines如何实现同一时间仅运行一个构建任务?

Azure DevOps 流水线单实例运行的内置解决方案

问题说明

你使用的batch: true是针对CI触发器的配置,作用是合并同一分支的多次提交,等当前构建完成后再运行一次包含所有新提交的构建,并非用于限制流水线的并发运行次数。所以手动启动两次流水线时,这个配置不会生效。

内置解决方案:作业级并发控制

Azure DevOps提供了内置的作业并发限制能力,具体配置方式如下:

1. 基础单实例限制

在流水线的作业定义中添加concurrency字段,将parallel设为1,即可限制同一时间仅运行一个该作业实例。如果需要让新启动的流水线直接取消正在运行的旧实例,可开启cancelInProgress(可选):

trigger:
  batch: true
  branches:
    include:
      - master
      - release/*
resources:
  pipelines:
    - pipeline: Build
      project: <project-name>
      source: <source-pipeline-name>
      trigger: true

jobs:
- job: BuildJob
  concurrency:
    parallel: 1
    # 可选:取消正在运行的旧实例,让新实例立即执行
    # cancelInProgress: true
  steps:
    # 替换为你的实际构建步骤
    - script: echo "执行构建任务"

2. 精细化并发控制

如果需要按分支、流水线实例等维度独立限制并发,可使用concurrency的key属性:

jobs:
- job: BuildJob
  concurrency:
    key: '$(Build.SourceBranchName)' # 按分支名设置独立并发键,不同分支互不影响
    parallel: 1
  steps:
    - script: echo "执行构建任务"

补充:batch: true的适用场景

再明确下这个配置的作用:仅对分支提交触发的CI流水线生效,当同一分支短时间内有多次提交时,它会等待当前构建完成后,将所有新提交合并为一次构建运行,避免重复构建。但手动触发、资源触发(如你配置的pipeline资源触发)的流水线不受该配置影响。

另一种内置方案:环境并发限制

如果你的流水线涉及部署环节,也可以通过环境资源实现限制:

  1. 进入项目的「环境」页面,创建或选择目标环境
  2. 编辑环境设置,找到「并发限制」并设为1
  3. 在流水线作业中指定使用该环境:
jobs:
- job: BuildJob
  environment: '你的环境名称'
  steps:
    - script: echo "执行构建任务"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:01:03