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

如何通过REST API为Azure DevOps环境添加/更新审批人

enter image description here

环境审批人配置不在Environments接口范围内,这类审批/门禁规则属于Azure DevOps Pipelines的统一检查(Checks)能力,走专门的检查配置接口实现,具体操作步骤如下:

前置准备

  • 先拿到批量创建好的环境的唯一ID,创建环境的接口返回体里的id字段就是该值,提前留存即可
  • 准备好要配置的审批人/审批组的Descriptor标识,可通过Graph相关接口提前批量查询获取
  • 接口鉴权沿用现有脚本的PAT或者服务主体权限即可,确保账号有环境的管理权限

接口调用说明

1. 新增审批配置

调用POST请求新增审批,接口地址格式:

POST https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/pipelines/checks/configurations?api-version=7.1-preview.1

请求体结构参考:

{
    "type": {
        "id": "8C6F20B1-D673-4F19-82B0-DB37E4358A2B",
        "name": "Approval"
    },
    "settings": {
        "approvers": [
            {
                "descriptor": "替换为审批人/审批组的descriptor"
            }
        ],
        "executionOrder": "anyOrder",
        "minRequiredApprovers": 1,
        "blockedApprovers": [],
        "allowCreatorToApprove": false,
        "timeout": 43200
    },
    "resource": {
        "type": "environment",
        "id": "替换为目标环境的ID",
        "name": "替换为目标环境名称"
    }
}

核心字段说明:

  • type.id是审批检查的固定类型ID,直接使用给定值即可,无需修改
  • executionOrder可选anyOrder(任意审批人通过即可)、inOrder(按列表顺序依次审批)
  • minRequiredApprovers设置最少需要通过审批的人数
  • allowCreatorToApprove控制是否允许流水线发起者自批自部署
  • timeout是审批超时时间,单位为分钟,默认43200即30天

2. 更新已有审批配置

如果目标环境已经配置过审批,需要先调用GET接口查询现有配置的ID:

GET https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/pipelines/checks/configurations?resourceType=environment&resourceId={目标环境ID}&api-version=7.1-preview.1

拿到返回结果里对应审批配置的id后,用和新增一致的请求体发送PUT请求即可,接口地址:

PUT https://dev.azure.com/{你的组织名}/{你的项目名}/_apis/pipelines/checks/configurations/{配置ID}?api-version=7.1-preview.1

PowerShell参考代码

# 配置基础参数
$orgName = "你的组织名"
$projectName = "你的项目名"
$pat = "你的个人访问令牌"
$envId = "目标环境ID"
$envName = "目标环境名"
$approverDescriptors = @("审批人1的descriptor", "审批人2的descriptor")

# 构造鉴权头
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($pat)"))
$header = @{Authorization = "Basic $base64AuthInfo"}

# 构造请求体
$requestBody = @{
    type = @{
        id = "8C6F20B1-D673-4F19-82B0-DB37E4358A2B"
        name = "Approval"
    }
    settings = @{
        approvers = $approverDescriptors | ForEach-Object { @{descriptor = $_} }
        executionOrder = "anyOrder"
        minRequiredApprovers = 1
        blockedApprovers = @()
        allowCreatorToApprove = $false
        timeout = 43200
    }
    resource = @{
        type = "environment"
        id = $envId
        name = $envName
    }
} | ConvertTo-Json -Depth 10

# 发送请求
$apiUri = "https://dev.azure.com/$orgName/$projectName/_apis/pipelines/checks/configurations?api-version=7.1-preview.1"
Invoke-RestMethod -Uri $apiUri -Method Post -Headers $header -Body $requestBody -ContentType "application/json"

注意事项

  • 不要使用6.0版本的API,检查配置接口在7.1及以上版本的参数结构更稳定,6.0版本存在字段不一致的问题
  • 如果要配置服务连接、变量组等其他资源的审批,只需要把resource.type改成对应资源类型、替换资源ID即可,接口逻辑完全一致
  • 审批人支持用户和Azure AD组,直接传入对应对象的descriptor即可,不需要额外区分类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:09:36