Azure DevOps-授予管道权限以使用REST API访问git存储库

时间:2020-09-01 20:22:44

标签: azure-devops

我已经编写了一个脚本,该脚本利用Azure DevOps REST API在Azure DevOps组织中创建一个项目。该脚本还创建git存储库,构建管道和工件提要。所有这些都是正确创建的。但是,我有一个问题。当我尝试运行管道时,收到以下消息:

此管道需要权限才能访问资源,然后此运行才能继续

提供了一个按钮来授予此权限。但是,我希望这在运行脚本后立即可以工作。此外,构建流程可能会由自动化过程触发,而将来无需人工干预。我在REST API的Azure文档中找不到与此相关的任何内容。我还向构建服务授予了对GIT存储库的所有权限。但是,我仍然会收到错误消息。谁能帮助我或指出正确的方向?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用api Authorizedresources - Authorize Project Resources来授权资源:

PATCH https://dev.azure.com/{organization}/{project}/_apis/build/authorizedresources?api-version=6.0-preview.1

Body:

[{"authorized":true,"id":"$queueID","name":"$queueName","type":"queue"}]

这里有几件事:

  1. “对所有管道的授予访问权限”设置是每个项目的每个池。但这可以通过链接的UI进行切换,也可以在创建时进行设置 时间在项目设置“添加池”用户界面中。

  2. 组织(或集合)级别的池上有两个设置,可以在“添加新池”对话框中看到这些设置。 组织级别。 “在所有项目中自动设置该代理池” 将继续并将该池添加到所有现有项目以及 将来添加新项目时。 “授予访问权限 所有管道”设置每个项目级别设置的默认状态 将该池添加到项目时,请参见上文。

“默认”池已预先设置,“自动设置”设置为true,并且 “授予访问权限...”设置为false。因此,在创建新项目时,它将 具有“默认”池可用,并在“默认”池设置中 该项目“授予访问权限...”的用户界面将设置为false,直到用户 更新它。

要修改“项目设置”中显示的“授予访问权限...”设置 上面链接了“代理程序池” UI,您可以使用上面的API或转到 项目设置-代理池,并将权限切换为 下面的屏幕截图显示:

enter image description here

如果您要修改“单位”设置的“默认”池 将池添加到新池时,“授予访问权限…”的默认值 项目,您可以使用以下REST API来做到这一点:

PATCH https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}

Headers:

Accept: /;api-version=6.0-preview.1;excludeUrls=true

Content-Type: application/json

Body:

{“id”:“1”,“Properties”:{“System.AutoAuthorize”: “true”}}

请参考案例:https://developercommunity.visualstudio.com/content/problem/887182/new-pipeline-permissions-feature-causing-builds-to.html