如何设置Azure Pipeline使其同一时间仅运行1次构建?
实现Azure Pipeline管道级单并发执行的方案
直接使用YAML管道的concurrency配置项即可实现管道级的单并发控制,完全匹配你的需求:
- 这是官方原生支持的管道级设置,无需依赖代理池、阶段锁等方案
- 限制整个管道同一时间仅运行一个实例,新的运行请求会自动进入队列,等待当前运行完成后再执行
- 管道内部的多阶段可以保持你原本设置的并行/串行逻辑,不会被强制串行
配置示例
trigger: none pr: none # 管道级并发控制配置 concurrency: pipeline: $(Build.DefinitionName) # 动态匹配当前管道名称,也可以写固定管道名 cancelInProgress: false # 不取消正在运行的实例,新请求排队等待 stages: - stage: Build_Stage jobs: - job: Build_Job steps: - script: echo 执行构建任务... displayName: '构建步骤' - stage: Test_Stage jobs: - job: Test_Job steps: - script: echo 执行测试任务... displayName: '测试步骤'
关键参数说明
pipeline: 指定要控制并发范围的管道标识,用$(Build.DefinitionName)可以自动匹配当前管道,避免硬编码名称cancelInProgress: 设置为false时,新的运行请求会排队等待正在进行的管道实例完成;若设为true,则会取消正在运行的实例,直接启动新的运行(根据你的需求,保持false即可)
注意事项
- 该配置仅适用于YAML管道,若你使用的是经典编辑器创建的管道,需要先转换为YAML管道才能使用此功能
- 此控制是针对整个管道实例的,而非单个阶段,所以管道内部的阶段可以正常按照你定义的逻辑并行或串行执行,不会受此配置影响
内容的提问来源于stack exchange,提问作者Naveh
相关产品推荐
相关产品推荐

