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

Azure DevOps Git:合入main分支前如何校验工作项字段?

解决Azure DevOps中PR合入main分支前校验工作项状态的方案

方法一:用原生分支策略+工作项规则实现(无需额外工具)

这是最直接的原生方案,完全基于Azure DevOps自带功能:

  • 第一步:配置工作项的校验字段
    进入项目的「工作项」>「进程」,选择你正在使用的进程(比如Scrum/Agile),编辑PBI或BUG类型的工作项模板:
    • 新增一个复选框字段(比如命名为「合入前确认」),或者复用现有字段(比如给「状态」新增「已准备合入」选项),也可以约定用标签(比如ready-for-merge)作为校验条件。
  • 第二步:设置分支策略和状态检查
    进入Git仓库的「分支」页面,找到main分支的「分支策略」:
    1. 先启用「工作项链接要求」,强制PR必须关联至少一个PBI/BUG工作项;
    2. 添加「状态检查」,选择「工作项查询匹配」:
      • 先创建一个工作项查询,筛选出满足合入条件的项:比如[合入前确认] = True、标签 Contains ready-for-merge或者状态 = 已准备合入;
      • 将这个查询设为必须通过的状态检查,只要关联的工作项不满足条件,PR就无法完成合入。

方法二:用Pipeline自定义校验逻辑(适合复杂场景)

如果需要更灵活的校验规则(比如多字段组合判断),可以用CI Pipeline来实现:

  • 创建一个CI Pipeline,触发条件设置为「当有PR提交到main分支时运行」;
  • 在Pipeline中添加脚本,调用Azure DevOps的CLI或REST API检查PR关联的工作项:
    示例PowerShell脚本片段:
    # 获取当前PR关联的所有工作项ID
    $workItems = az repos pr work-item list --id $(System.PullRequest.PullRequestId) --query "[].id" -o tsv
    
    foreach ($id in $workItems) {
        # 获取工作项的字段详情
        $workItem = az boards work-item show --id $id --query "fields" -o json | ConvertFrom-Json
        
        # 校验复选框字段(替换成你的字段引用名,比如Custom_ReadyForMerge)
        if ($workItem.Custom_ReadyForMerge -ne $true) {
            Write-Error "工作项#$id未勾选合入确认,PR无法合入"
            exit 1
        }
    
        # 或者校验标签
        # if (-not ($workItem.System_Tags -match "ready-for-merge")) {
        #     Write-Error "工作项#$id未添加ready-for-merge标签,PR无法合入"
        #     exit 1
        # }
    }
    
  • 把这个Pipeline添加到main分支的分支策略中,设置为「必须通过才能完成PR」,只要脚本返回非0值,PR就会被阻止。

注意事项

  • 要确保工作项的字段/标签权限设置正确,只有相关负责人能修改这些校验项,避免误操作;
  • 分支策略里的状态检查一定要设为「阻止合入直到通过」,不要设为可选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:10:19