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

如何配置Azure Pipelines YAML仅显示触发的对应阶段?

Azure Pipelines YAML 配置修改方案

问题现状

现有Azure Pipelines YAML配置中,Test阶段可正常运行,但Build和Deploy阶段始终会显示,无法实现以下需求:

  • Test阶段:仅在代码提交(IndividualCI)和Pull Request(PR)时触发并可见
  • Build和Deploy阶段:仅在代码合并到默认分支(production)时触发并可见

修改后的完整YAML配置

variables:
  vmImageName: "ubuntu-latest"

# 触发规则:production分支提交触发,所有分支PR自动触发
trigger:
  - production
pr:
  autoCancel: true
  branches:
    include:
      - '*'

stages:
  - stage: Test
    displayName: Test stage
    # 覆盖代码提交和PR两种触发场景
    condition: or(eq(variables['Build.Reason'], 'IndividualCI'), eq(variables['Build.Reason'], 'PullRequest'))
    jobs:
      - job: Test
        displayName: Test job
        pool:
          vmImage: $(vmImageName)
        steps:
          - script: |
              echo "Testing ..."
            displayName: 'Test job script'

  - stage: Build
    displayName: Build stage
    # 仅在production分支、非PR触发时执行
    condition: and(eq(variables['Build.SourceBranch'], 'refs/heads/production'), ne(variables['Build.Reason'], 'PullRequest'))
    jobs:
      - job: Build
        displayName: Build job
        pool:
          vmImage: $(vmImageName)
        steps:
          - script: |
              echo "Building ..."
            displayName: 'Build job script'

  - stage: Deploy
    displayName: Deploy to Dev
    dependsOn: Build
    # 与Build阶段条件保持一致,确保仅在production分支非PR场景下执行
    condition: and(eq(variables['Build.SourceBranch'], 'refs/heads/production'), ne(variables['Build.Reason'], 'PullRequest'))
    jobs:
      - job: Deploy
        displayName: Deploy job
        pool:
          vmImage: $(vmImageName)
        steps:
          - script: |
              echo "Deploying ..."
            displayName: 'Deploy job script'

关键修改说明

  1. 新增PR触发规则
    添加pr节点配置,确保所有分支的Pull Request会自动触发流水线,让Test阶段能覆盖PR场景。

  2. 调整Test阶段触发条件
    将原单一条件修改为or逻辑,同时匹配代码提交(IndividualCI)和PR(PullRequest)两种触发原因,只有满足条件时Test阶段才会显示并执行。

  3. 修正Build/Deploy阶段条件

    • 移除原条件中的succeeded():合并到production分支时Test阶段不会执行,succeeded()会导致Build阶段因无前置成功阶段而无法触发。
    • 保留分支和触发原因判断:确保仅在production分支的非PR触发场景下,Build和Deploy阶段才会显示并执行,Deploy阶段依赖Build阶段的成功状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:15:33