没有通过 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.
但是:
这有点奇怪,因为 $env:SYSTEM_ACCESSTOKEN
对我来说实际上应该属于从 Azure 内部调用的进程(管道执行进程),所以它也应该可以访问变量组. (无论如何,我不知道当前 运行 管道的身份是什么以及它的设置位置)。
我可以理解为进程在一台机器上执行(实际上是跨不同的系统,所以很复杂,并不意味着执行Identity的Pipeline会自动直接访问Variable Group) ,但是 我找不到任何关于如何设置所有这些访问权限的文档。 (所附链接上的文章未提及访问权限)。
我已经尝试 add/setup 任何(可能相关)users/groups 到组变量权限(Security
变量组部分的部分),但仍然没有运气REST API 更新。
那么,关于为当前执行构建管道的身份设置权限的任何提示?
OAuth 访问令牌是使用“Project Collection Build Service(xxx)
”帐户创建的,而不是您的帐户。
所以你只需要添加“Project Collection Build Service(xxx)
”帐户作为变量组的Administrator
角色。
对于今天 运行 遇到此错误的任何人。似乎 MS 改变了一些东西。如果您密切注意错误消息,它会告诉您哪个帐户需要访问权限。将此帐户添加到变量组库的权限中。在我的例子中,它是一个名为“(我的组织)平台构建服务”的帐户
简而言之,我试图在从构建管道执行 PowerShell 脚本时更新变量组(增加构建号,但这部分并不那么重要)。
正如
$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.
但是:
这有点奇怪,因为
$env:SYSTEM_ACCESSTOKEN
对我来说实际上应该属于从 Azure 内部调用的进程(管道执行进程),所以它也应该可以访问变量组. (无论如何,我不知道当前 运行 管道的身份是什么以及它的设置位置)。我可以理解为进程在一台机器上执行(实际上是跨不同的系统,所以很复杂,并不意味着执行Identity的Pipeline会自动直接访问Variable Group) ,但是 我找不到任何关于如何设置所有这些访问权限的文档。 (所附链接上的文章未提及访问权限)。
我已经尝试 add/setup 任何(可能相关)users/groups 到组变量权限(Security
变量组部分的部分),但仍然没有运气REST API 更新。
那么,关于为当前执行构建管道的身份设置权限的任何提示?
OAuth 访问令牌是使用“Project Collection Build Service(xxx)
”帐户创建的,而不是您的帐户。
所以你只需要添加“Project Collection Build Service(xxx)
”帐户作为变量组的Administrator
角色。
对于今天 运行 遇到此错误的任何人。似乎 MS 改变了一些东西。如果您密切注意错误消息,它会告诉您哪个帐户需要访问权限。将此帐户添加到变量组库的权限中。在我的例子中,它是一个名为“(我的组织)平台构建服务”的帐户