身份验证可在自定义任务中访问Azure DevOps的其他部分

问题描述 投票:1回答:1

我想创建一个Azure DevOps自定义任务,该任务访问Azure DevOps的其他部分。具体来说,我想创建一个自定义任务,为PR添加注释。

不幸的是,我无法弄清楚如何正确认证。我找到了这段代码并将其添加到我的任务中:

let token: string = tl.getEndpointAuthorizationParameter("SYSTEMVSSCONNECTION", "AccessToken", false);
let collectionUrl: string = tl.getEndpointUrl("SYSTEMVSSCONNECTION", false).replace(".vsrm.visualstudio.com", ".visualstudio.com");
let authHandler = token.length === 52 ? vsts.getPersonalAccessTokenHandler(token) : vsts.getBearerHandler(token);
let connection = new vsts.WebApi(collectionUrl, authHandler);

但我得到错误:

TF401027:您需要Git'PullRequestContribute'权限才能执行此操作。详细信息:标识'Build \ XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',范围'存储库'。

我验证了构建服务应该具有正确的权限:enter image description here

我还尝试在“作业”设置中选中“允许脚本访问OAuth令牌”框,但这没有任何效果。

我错过了什么?

azure-devops azure-pipelines azure-pipelines-build-task azure-devops-extensions azure-devops-hosted-agent
1个回答
0
投票

我认为你应该使用“System.AccessToken”变量来获取令牌:

tl.getVariable('System.AccessToken'); 

Predefined build variables - System.AccessToken

我在构建任务中使用它:https://github.com/ashamrai/AzureDevOpsExtensions/blob/master/CustomBuildTask/NewWICustomTask/index.ts

© www.soinside.com 2019 - 2024. All rights reserved.