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
相关产品推荐
相关产品推荐

