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

Azure Devops Pipeline: Define variable and use it as task input on another step

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

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

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

任务 1 Powershell:

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

任务 2 Powershell:

任务 2 中的 PowerShell:

Write-Host "$(myvariable)"

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

我的输出是:

Task2 - $(myvariable) as display name

但 PowerShell 脚本本身的输出是:

abcdefg

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

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

作为执行逻辑,将流水线排队后,可以看到先显示的是流水线名称、任务名称,虽然脚本并没有执行。因此,如果这些名称使用变量来定义它们,则变量只能从预定义变量中获取值。因为编译得到的变量值pipeline/task名字总是比脚本先执行

此外,任务中的脚本只是创建了一个脚本变量,这个脚本变量只在Phase的生命周期内存在,执行后销毁.

How could I set a variable in task 1 and access it as an input variable to task2?

如你所愿,如果在另一个脚本中获取它,只需使用 $(xxx)$env:xxx。但是,对于name,$()只能得到预定义的变量值,而不是脚本变量值。