无权通过 Azure DevOps REST API 从运行管道更新变量组

Aga*_*gat 4 azure-devops azure-pipelines azure-devops-rest-api

简而言之,我试图在从构建管道执行 PowerShell 脚本时更新变量组(增加构建号,但这部分并不那么重要)。

正如本主题Azure DevOps 文档中所建议的,我使用类似于以下内容的代码:

$url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/build-release/definitions/$($env:SYSTEM_DEFINITIONID)?api-version=2.0"
Write-Host "URL: $url"
$pipeline = Invoke-RestMethod -Uri $url -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 1000)"
Run Code Online (Sandbox Code Playgroud)

除了一件事外,一切都正常。我似乎没有某种权限来更新此值,收到以下错误消息:

您无权对变量组执行此操作。可变组管理员应将您添加到管理员角色。

然而:

  1. $env:SYSTEM_ACCESSTOKEN对我来说有点奇怪,因为它实际上应该属于从 Azure 内部调用的进程(管道执​​行进程),所以它也应该可以访问变量组。(无论如何,我不知道当前运行的管道的标识是什么以及它的设置位置)。

  2. 我可以理解这个过程是在一台机器上执行的(实际上,跨不同系统,所以这一切都很复杂,并不意味着自动执行身份的管道可以直接访问变量组),但我找不到任何文档如何设置所有这些访问权限。(所附链接上的文章没有提及访问权限)。

我已经尝试将任何(可能相关的)用户/组添加/设置到组变量权限(Security变量组部分的部分),但仍然没有使用 REST API 更新。 在此处输入图片说明

那么,关于设置当前执行构建管道标识的权限的任何提示?

And*_*SFT 5

OAuth 访问令牌是使用“ Project Collection Build Service(xxx)”帐户创建的,而不是您的帐户。

所以你只需要添加“ Project Collection Build Service(xxx)”帐户作为Administrator变量组的角色。

在此处输入图片说明