[英]Azure DevOps build agent does not have accesstokens in its tokencache
我正在尝试从 Azure DevOps 构建代理中调用 rest api。 为此,我需要 Bearertoken,我可以通过以下方式在我的本地机器中获取它:
$accessToken = ((Get-AzContext).TokenCache.ReadItems() | Where { $_.TenantId -eq (Get-AzContext).Tenant } | Sort-Object -Property ExpiresOn -Descending)[0].AccessToken
但是,在构建代理上,这永远不会返回任何令牌。 还有其他方法我应该尝试获取该令牌吗?
您是否在代理设置中启用了“允许脚本访问 OAuth 令牌”设置?
这适用于使用视觉设计器的构建和发布。
对于 YAML 构建,请参阅预定义变量文档。 有关于在脚本中使用“System.AccessToken”变量的说明。 本质上,您必须使用变量将 map System.AccessToken 显式放入管道中。 您可以在步骤或任务级别执行此操作:
steps:
- bash: echo This is a script that could use $SYSTEM_ACCESSTOKEN
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
- powershell: Write-Host "This is a script that could use $env:SYSTEM_ACCESSTOKEN"
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
感谢您的建议和想法。 答案太简单了,无法弄清楚。 我撕掉了大部分的oneliner,现在它只使用:
$accessToken = ((Get-AzContext).TokenCache.ReadItems()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.