【问题标题】:Having no permission for updating Variable Group via Azure DevOps REST API from running Pipeline无权通过运行 Pipeline 通过 Azure DevOps REST API 更新变量组
【发布时间】:2018-10-25 09:37:59
【问题描述】:

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

正如 this topicAzure 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)"

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

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

但是:

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

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

我尝试将任何(可能相关的)用户/组添加/设置到组变量权限(变量组部分的Security 部分),但 REST API 更新仍然没有成功。

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

【问题讨论】:

    标签: azure-devops azure-pipelines azure-devops-rest-api


    【解决方案1】:

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

    因此您只需将“Project Collection Build Service(xxx)”帐户添加为变量组的Administrator 角色。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-24
        • 1970-01-01
        • 2019-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-14
        相关资源
        最近更新 更多