没有通过 Azure DevOps REST API 从 运行 管道更新变量组的权限

Having no permission for updating Variable Group via Azure DevOps REST API from running Pipeline

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

正如 and Azure DevOps docs 中所建议的,我使用的代码类似于:

$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)"

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

You do not have permissions to perform this operation on the variable group. A variable group Administrator should add you to the Administrator role.

但是:

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

  2. 我可以理解为进程在一台机器上执行(实际上是跨不同的系统,所以很复杂,并不意味着执行Identity的Pipeline会自动直接访问Variable Group) ,但是 我找不到任何关于如何设置所有这些访问权限的文档。 (所附链接上的文章未提及访问权限)。

我已经尝试 add/setup 任何(可能相关)users/groups 到组变量权限(Security 变量组部分的部分),但仍然没有运气REST API 更新。

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

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

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

对于今天 运行 遇到此错误的任何人。似乎 MS 改变了一些东西。如果您密切注意错误消息,它会告诉您哪个帐户需要访问权限。将此帐户添加到变量组库的权限中。在我的例子中,它是一个名为“(我的组织)平台构建服务”的帐户