如何在Azure Dev Ops中访问任务输出变量

时间:2019-07-02 19:07:33

标签: azure-devops azure-pipelines

我正在尝试使用新的多阶段yaml管道从特定版本中下载工件。 DownloadBuildArtifacts@0任务有一个BuildNumber的输出变量,我想进一步参考它,但是我不知道如何访问它。

在任务的GUI中,有一个框让您设置参考名称 enter image description here

但是从yaml管道定义中,我无法弄清楚如何访问此变量。

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'specific'
    project: 'Sandbox'
    pipeline: 'bash-testing'
    buildVersionToDownload: 'latest'
    downloadType: 'single'
    artifactName: 'someArtifactName'
    referenceNames: 'blahblah'
- bash: echo $BLAHBLAH_BUILDNUMBER

简单输出

enter image description here

2 个答案:

答案 0 :(得分:3)

您设置了错误的输出变量。

在YAML中的上一个任务中定义输出变量的格式:

echo "##vso[task.setvariable variable=myOutputVar;isOutput=true]this is the value of output variable"
name: PWS

注意isOutput=true键代码,它声明此变量是输出变量。而且,name等于在经典编辑器用户界面中显示的Reference name

enter image description here

有关如何在Bash任务中访问和使用此输出变量,此调用脚本的格式为:

echo $(name.VariableName)

所以,对于我的示例脚本是:

echo $(PWS.myOutputVar)

答案 1 :(得分:1)

我的Yaml是不正确的,Merlin Liang关于name是正确语法的评论帮助我弄清楚了。

引用任务输出变量所需的正确yaml语法是

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'specific'
    project: 'Sandbox'
    pipeline: 'bash-testing'
    buildVersionToDownload: 'latest'
    downloadType: 'single'
    artifactName: 'some-artifact-name'
  name: 'TEST'
- bash: echo $(TEST.BuildNumber)