如何配置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'
关键修改说明
新增PR触发规则
添加pr节点配置,确保所有分支的Pull Request会自动触发流水线,让Test阶段能覆盖PR场景。调整Test阶段触发条件
将原单一条件修改为or逻辑,同时匹配代码提交(IndividualCI)和PR(PullRequest)两种触发原因,只有满足条件时Test阶段才会显示并执行。修正Build/Deploy阶段条件
- 移除原条件中的
succeeded():合并到production分支时Test阶段不会执行,succeeded()会导致Build阶段因无前置成功阶段而无法触发。 - 保留分支和触发原因判断:确保仅在production分支的非PR触发场景下,Build和Deploy阶段才会显示并执行,Deploy阶段依赖Build阶段的成功状态。
- 移除原条件中的
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

