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

Azure DevOps YAML管道:如何在外部流水线完成后触发后续阶段

实现主流水线触发独立测试流水线并等待完成的方案

核心思路

主流水线在stage1执行完成后,通过触发子流水线任务调用独立的测试YAML流水线,配置等待子流水线成功完成后,再继续执行后续的stage2、stage3、stage4。

具体实现代码

主流水线YAML示例

stages:
- stage: stage1
  jobs:
  - job: Job1
    steps:
    - script: echo "Executing Stage 1 tasks..."
      displayName: 'Run Stage1 Work'

# 触发测试流水线并等待其完成的阶段
- stage: Trigger_Test_Pipeline
  dependsOn: stage1
  jobs:
  - job: Trigger_Test_Job
    steps:
    - task: PipelineTrigger@1
      inputs:
        pipeline: '你的测试流水线名称或ID' # 替换为实际的测试流水线标识
        branch: 'main' # 测试流水线的目标分支
        waitForCompletion: true # 关键配置:等待子流水线完成
        condition: succeeded() # 仅当stage1成功时触发

- stage: stage2
  dependsOn: Trigger_Test_Pipeline
  condition: succeeded()
  jobs:
  - job: Job2
    steps:
    - script: echo "Executing Stage 2 tasks..."
      displayName: 'Run Stage2 Work'

- stage: stage3
  dependsOn: stage2
  condition: succeeded()
  jobs:
  - job: Job3
    steps:
    - script: echo "Executing Stage 3 tasks..."
      displayName: 'Run Stage3 Work'

- stage: stage4
  dependsOn: stage3
  condition: succeeded()
  jobs:
  - job: Job4
    steps:
    - script: echo "Executing Stage 4 tasks..."
      displayName: 'Run Stage4 Work'

测试流水线YAML示例(独立文件)

# test-pipeline.yml
trigger: none # 禁用自动触发,仅允许被主流水线调用
pr: none

stages:
- stage: Test_Stage
  jobs:
  - job: Test_Job
    steps:
    - script: echo "Running automated tests..."
      displayName: 'Execute Tests'
    # 这里添加实际的测试任务,比如单元测试、集成测试等

关键配置说明

  • dependsOn: 指定阶段的依赖关系,确保Trigger_Test_Pipeline在stage1完成后执行,后续阶段依赖测试流水线阶段。
  • waitForCompletion: true: 必须设为true,让主流水线等待子流水线执行完成,否则会直接推进后续阶段。
  • condition: succeeded(): 确保只有前一阶段成功时,当前阶段才会执行,避免失败后继续流程。
  • 测试流水线设置trigger: none和pr: none,防止意外自动触发,仅接受主流水线的调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:22:08