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

Azure DevOps Pipeline关联BitBucket:如何仅在PR代码变更时触发构建

解决方案

1. 关闭自动取消旧构建的行为

默认情况下Azure DevOps PR构建会自动取消同PR的旧运行实例,要禁用这个特性,只需在PR触发器配置中添加autoCancel: false:

pr:
  branches:
    include:
      - master
      - develop
      - release*
  autoCancel: false

2. 仅在PR代码变更时触发构建

PR元数据变更(如修改描述、添加审核人)触发构建是因为Azure DevOps默认监听PR的所有变更事件。要只在代码文件变更时触发构建,有两种可行方案:

方案一:通过条件判断过滤

在job级别添加条件,仅当PR存在代码变更时才执行构建。利用Azure DevOps内置变量判断变更文件数量:

pr:
  branches:
    include:
      - master
      - develop
      - release*
  autoCancel: false

jobs:
- job: Build
  # 仅当PR触发且存在代码变更时执行
  condition: >
    and(
      eq(variables['Build.Reason'], 'PullRequest'),
      gt(length(variables['PullRequest.Changes']), 0)
    )
  steps:
    # 你的构建步骤(如编译、测试等)

方案二:通过脚本检查变更

如果PullRequest.Changes变量在BitBucket集成中不可用,可添加脚本步骤主动检查PR的代码变更情况,无变更则终止构建:

pr:
  branches:
    include:
      - master
      - develop
      - release*
  autoCancel: false

jobs:
- job: Build
  steps:
    - bash: |
        # 获取当前PR的变更文件列表
        CHANGES=$(az repos pr show --id $(System.PullRequest.PullRequestId) --query 'changes[].item.path' --output tsv)
        if [ -z "$CHANGES" ]; then
          echo "无代码变更,终止构建"
          exit 1
        fi
      displayName: 检查PR代码变更
      env:
        AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
    # 后续构建步骤

注意:使用Azure CLI脚本需要确保流水线服务账号拥有PR读取权限,且已预装Azure DevOps扩展。

内容的提问来源于stack exchange,提问作者Matthew van Boheemen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:07:49