如何配置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
核心逻辑说明
PR触发场景:
当创建针对feature/dev分支的PR时,Build.Reason值为PullRequest,Deploy阶段的条件不满足,因此仅Validate阶段运行。合并触发场景:
PR合并到feature/dev分支后,CI触发器会触发流水线,此时Build.Reason为IndividualCI(单提交触发)或BatchedCI(批量提交触发),且Build.SourceBranch指向合并后的目标分支(refs/heads/feature或refs/heads/dev),满足Deploy阶段的条件,因此会先执行Validate,再执行Deploy。
内容的提问来源于stack exchange,提问作者hallen98
相关产品推荐
相关产品推荐

