Azure devops 如何允许脚本从yaml构建访问OAuth令牌
我的构建脚本使用Azure devops 如何允许脚本从yaml构建访问OAuth令牌,azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我的构建脚本使用SYSTEM\u ACCESSTOKEN环境变量 在designer构建定义中,我选中了允许脚本访问OAuth令牌,一切正常 复制设计器生成的YAML定义后,我无法访问SYSTEM\u ACCESSTOKEN环境变量 如何允许我的YAML构建访问OAuth令牌 这是我的azure-pipelines.yaml: queue: name: Hosted VS2017 steps: - checkout: self lfs: true persistCredential
SYSTEM\u ACCESSTOKEN
环境变量
在designer构建定义中,我选中了允许脚本访问OAuth令牌,一切正常
复制设计器生成的YAML定义后,我无法访问SYSTEM\u ACCESSTOKEN
环境变量
如何允许我的YAML构建访问OAuth令牌
这是我的azure-pipelines.yaml:
queue:
name: Hosted VS2017
steps:
- checkout: self
lfs: true
persistCredentials: true
- powershell: ./build.ps1
我在中找到了解决方案:变量必须用YAML声明 在所有作业/任务的管道级别:
variables:
system_accesstoken: $(System.AccessToken)
jobs:
job: ...
或者在脚本/任务级别,例如PowerShell:
- powershell: ./build.ps1
env:
system_accesstoken: $(System.AccessToken)
这就是我的工作
- pwsh: |
$pat = "Bearer $env:SYSTEM_ACCESSTOKEN"
Write-Host "PAT is: $pat"
$getItemsUrl = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/git/repositories/$(Build.Repository.ID)/items?recursionLevel=Full&includeContentMetadata=true&api-version=6.0"
Write-Host "url: $getItemsUrl"
$data = Invoke-RestMethod -Uri "$getItemsUrl" -Headers @{Authorization = $pat}
Write-Host "Raw data returned from Get Items API call: $data"
Foreach ($i in $data.value)
{
Write-Host "Detailed data returned from Get Items API call: $i"
}
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
displayName: Power!
我试过这样做,但是对于yml,我们是否需要在变量选项卡中以及在yml定义中指定此变量?您只需要在yml中定义变量。是的,我知道了。对于第三方任务,它需要用大写字母表示:)第一个选项,添加管道级别变量,对我来说不起作用。但是,为PowerShell任务(桌面或核心)添加环境规范是可行的。传递给PowerShell任务的环境变量的名称必须为大写。除了“自我”之外,还有其他选择吗“为了结帐?如果在“资源”下定义了另一个存储库,如何签出其他存储库?@phandinhlan唯一的选项是
self
在生成之前签出源,或者none
在没有源的情况下运行生成。如果您想将构建用于另一个repo,只需将yaml文件放在那里。如果您需要其他回购,您可以使用脚本任务签出其他来源。谢谢!我一直在努力想办法,但似乎没有办法。