【问题标题】:Azure DevOps - Grant pipeline permissions to access a git repository with REST APIAzure DevOps - 授予管道权限以使用 REST API 访问 git 存储库
【发布时间】:2020-09-01 20:22:44
【问题描述】:

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

此管道需要获得访问资源的权限才能继续运行

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

谢谢

【问题讨论】:

    标签: azure-devops


    【解决方案1】:

    您可以使用 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 切换或在创建时设置 项目设置“添加池”UI中的时间。

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

    “默认”池预设为“自动配置”设置为 true,并且 “授予访问权限……”设置为 false。所以当创建一个新项目时,它会 有可用的“默认”池,并在“默认”池设置中 该项目“授予访问权限...”的 UI 将设置为 false,直到用户 更新它。

    修改项目设置中的“授予访问权限...”设置 上面链接的代理池 UI,你可以使用上面的 API,或者去 项目设置——代理池,并将权限切换为 截图如下:

    如果您想修改组织设置的“默认”池的 将池添加到新池时“授予访问权限...”的默认值 项目,您可以使用以下 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

    【讨论】:

    • 我尝试了上述两个选项,但仍然收到提示:此管道需要访问资源的权限才能继续运行。我检查了其他一些选项,但在 api 中找不到任何东西来授予管道对 git 存储库的访问权限。
    • 您使用私人代理吗?根据我的测试,在项目池中启用“授予所有管道的访问权限”设置后,我不会得到提示。
    • 不,我正在使用 Azure Pipeline 池中的构建和内置代理
    • 您能分享一下您是如何在脚本中运行管道的吗?运行 Authorizedresources - Authorize Project Resources api 的结果是什么?
    • 这个问题有什么更新吗?你能分享一下你是如何在脚本中运行管道的吗?运行 Authorizedresources - Authorize Project Resources api 的结果是什么?
    猜你喜欢
    • 2020-08-31
    • 2021-12-05
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2022-11-23
    相关资源
    最近更新 更多