我正在为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"
任何想法,我都缺少哪个范围?
答案 0 :(得分:1)
我在此处报告了一个问题:VSTS extension ReleaseManagement/Core/RestClient api 401 error,您可以关注。
您可以使用个人访问令牌发送http请求以检索必要的数据。
您还可以获取发布定义,然后通过相应的REST API获取每个工件版本,例如Get a list of commits,Get a list of builds。