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

如何配置Azure Pipelines阶段:PR创建跑验证,合并跑部署?

解决方案

要实现你的需求,需要同时配置PR触发器和阶段条件,通过预定义变量区分PR创建和合并后的触发场景,无需拆分触发器。以下是完整的YAML配置及说明:

trigger:
  batch: true
  branches:
    include:
      - feature
      - dev

# 添加PR触发器,确保创建PR时触发流水线
pr:
  branches:
    include:
      - feature
      - dev

pool:
  vmImage: ubuntu-latest

stages:
  - stage: Validate
    # PR创建时、合并后的CI触发时都会执行此阶段
    jobs:
      - job: Validate_Job
        steps:
          # 替换为你的Validate阶段实际步骤
          - script: echo "执行Validate阶段逻辑..."
            displayName: Run Validation

  - stage: Deploy
    dependsOn: Validate
    # 仅在PR合并到feature/dev分支的CI触发时执行
    condition: >
      and(
        # 排除PR创建的触发场景
        not(eq(variables['Build.Reason'], 'PullRequest')),
        # 限定当前分支为feature或dev(合并后的目标分支)
        or(
          startsWith(variables['Build.SourceBranch'], 'refs/heads/feature'),
          startsWith(variables['Build.SourceBranch'], 'refs/heads/dev')
        )
      )
    jobs:
      - job: Deploy_Job
        steps:
          # 替换为你的Deploy阶段实际步骤
          - script: echo "执行Deploy阶段逻辑..."
            displayName: Run Deployment

核心逻辑说明

  1. PR触发场景:
    当创建针对feature/dev分支的PR时,Build.Reason值为PullRequest,Deploy阶段的条件不满足,因此仅Validate阶段运行。

  2. 合并触发场景:
    PR合并到feature/dev分支后,CI触发器会触发流水线,此时Build.Reason为IndividualCI(单提交触发)或BatchedCI(批量提交触发),且Build.SourceBranch指向合并后的目标分支(refs/heads/feature或refs/heads/dev),满足Deploy阶段的条件,因此会先执行Validate,再执行Deploy。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:08:10