Azure Devops Pipeline:定义变量并将其用作下一步的任务输入

时间:2019-08-12 22:09:39

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

我有Azure DevOps发布管道作业,其中包含4个任务。

我想在第一个任务中设置环境变量,并将该值用作第二个任务的输入参数:显示名称。

我们可以假设所有4个步骤都是PowerShell脚本。

任务1 Powershell:

Write-Host "##vso[task.setvariable variable=myvariable;]abcdefg"

任务2 Powershell: task2

任务2中的PowerShell

Write-Host "$(myvariable)"

如何在任务1中设置变量并将其作为任务2的输入变量进行访问?

我的输出是:

  

任务2-以$(myvariable)作为显示名称

但是PowerShell脚本本身的输出为:

  

abcdefg

1 个答案:

答案 0 :(得分:2)

  

写入主机“ ## vso [task.setvariable variable = myvariable;] abcdefg”

这是因为此脚本创建的变量不是预定义的变量。

作为执行逻辑,在对管道进行排队之后,即使不执行脚本,也可以看到首先显示了管道名称,任务名称。因此,如果这些名称使用变量来定义它们,则该变量只能从预定义变量中获取值。因为变量值的编译进入管道/任务名称总是比执行的脚本优先。

此外,任务中的脚本仅创建一个脚本变量,并且该脚本变量仅在Phase的生存期内有效,并在执行后被销毁

  

如何在任务1中设置变量并将其作为输入访问   任务2的变量?

根据需要,如果在另一个脚本中获取它,则只需使用$(xxx)$env:xxx。但是,就名字而言,$()可以获取预定义的变量值,而不是脚本变量值。