如果任务需要 SYSTEM_ACCESSTOKEN,VSTS 会验证并警告用户

VSTS validate and warn user if task requires SYSTEM_ACCESSTOKEN

有什么方法可以在用户配置他们的任务时警告他们此特定任务需要使用 SYSTEM_ACCESSTOKEN 变量?我在我的任务中添加了一个检查:

if($env:SYSTEM_ENABLEACCESSTOKEN -eq $false){throw "OAuth Token Access not enabled! Set in the Agent Phase Options."}

没关系,但用户不会发现,直到他们已经启动了一个在这个原因下会失败的版本。我在扩展清单中没有看到任何内容。

任务不需要显式访问 OAuth 令牌。任务始终享有特权,可以通过 VSTS 任务 SDK 请求访问令牌。

要访问 REST API,请使用:

$vssCredentials = Get-VstsVssCredentials
$collectionUrl = New-Object System.Uri((Get-VstsTaskVariable -Name 'System.TeamFoundationCollectionUri'
-Require))
Add-Type -LiteralPath "$PSScriptRoot\Microsoft.TeamFoundation.Core.WebApi.dll"
$projectHttpClient = New-Object Microsoft.TeamFoundation.Core.WebApi.ProjectHttpClient($collectionUrl,
$vssCredentials)
$projectHttpClient.GetProjects().Result

另请参阅:

如果需要,您还可以从返回的凭据中提取令牌。

仅当自定义脚本需要访问构建的用户令牌时,才需要访问 OAuth 令牌复选框。