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文件放在那里。如果您需要其他回购,您可以使用脚本任务签出其他来源。谢谢!我一直在努力想办法,但似乎没有办法。