【问题标题】:VSTS validate and warn user if task requires SYSTEM_ACCESSTOKEN如果任务需要 SYSTEM_ACCESSTOKEN,VSTS 会验证并警告用户
【发布时间】:2019-01-22 15:57:09
【问题描述】:

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

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

没关系,但是用户在他们已经启动发布之前不会发现,因为这个原因会失败。我在扩展清单中没有看到任何内容。

【问题讨论】:

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


    【解决方案1】:

    任务不需要显式访问 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 令牌复选框。

    【讨论】:

    • 谢谢杰西,我能够得到这个工作。我必须将以下 dll 添加到我的扩展中: Microsoft.VisualStudio.Services.Common.dll Microsoft.VisualStudio.Services.WebApi.dll Newtonsoft.Json.dll System.Net.Http.Formatting.dll
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 2016-05-17
    • 2021-11-20
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多