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,$()
只能得到预定义的变量值,而不是脚本变量值。
我有 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,$()
只能得到预定义的变量值,而不是脚本变量值。