如何调用VSTS REST API以获取Web扩展中的发布定义工件列表?

时间:2018-04-05 10:03:23

标签: azure-devops azure-pipelines-release-pipeline azure-devops-extensions azure-devops-rest-api

我正在为VSTS实施特定版本管理的Web扩展。从该扩展我需要为特定版本定义启动新版本。创建发布的先决条件是使用过的工件及其正确版本的具体集合。那是我的痛苦。

有一个RESP API调用(未记录),它提供了每个版本的工件列表,以及新版本要使用的预先选择的默认工件版本。当您打开用于创建新版本的对话框(或侧面板)时,VSTS本身会调用此类API。它也在VSTS Release API( ReleaseManagement / Core / RestClient )中定义,函数名称为 getArtifactVersions

基础请求看起来像 https:// {collectionName} .vsrm.visualstudio.com / {projectId} / _apis / Release / artifacts / versions?releaseDefinitionId = {releaseDefinitionId}

当我直接在浏览器中运行请求时,我得到了正确的答案(工件列表及其可用版本)。但是当我从网络扩展程序运行它时,我收到401错误: TF400813:用户'7a6b0fe0-56fd-61f5-9a78-2e170802ac50'无权访问此资源。

我很确定问题位于vss-extension.json清单文件中设置的范围内的某个位置。我已经在documentation中定义了所有可能的范围,但仍然没有成功。错误消息中的用户身份是我的身份,我对我们的集合拥有管理员权限。当我亲自运行请求(使用个人访问令牌或仅登录浏览器)时,结果可以正确提供。但是,使用生成的承载令牌的同一用户则是未经授权的。所以从这个行为我的猜测即将到来。清单范围中缺少某些东西。

U放置文档中的所有范围(每个范围组中最高的范围)仍然没有成功。以下是它们的列表:

"vso.agentpools",
"vso.build_execute",
"vso.release_manage",
"vso.code_manage",
"vso.packaging_manage",
"vso.work_write",
"vso.agentpools_manage",
"vso.chat_manage",
"vso.dashboards_manage",
"vso.entitlements",
"vso.extension_manage",
"vso.extension.data_write",
"vso.gallery_manage",
"vso.identity",
"vso.notification_manage",
"vso.profile_write",
"vso.project_manage",
"vso.symbols_manage",
"vso.test_write"

任何想法,我都缺少哪个范围?

1 个答案:

答案 0 :(得分:1)

我在此处报告了一个问题:VSTS extension ReleaseManagement/Core/RestClient api 401 error,您可以关注。

您可以使用个人访问令牌发送http请求以检索必要的数据。

您还可以获取发布定义,然后通过相应的REST API获取每个工件版本,例如Get a list of commitsGet a list of builds