如何在VSTS管道中的任务之间传递变量?

时间:2018-03-13 08:26:57

标签: azure azure-pipelines-release-pipeline

我正致力于通过VSTS管道部署arm模板。我有一个powershell脚本获取子网ID,我需要将此子网ID值传递给VSTS中的另一个任务。如何将变量从powershell脚本传递到vsts,然后将其作为parmae​​ter传递给azure资源组部署任务?

2 个答案:

答案 0 :(得分:13)

您可以在powershell中设置一个新变量,然后将其传递给VSTS,以便可以在下一个任务中使用它,如下所示。

Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
Write-Host "##vso[task.setvariable variable=secretSauce;issecret=true]crushed tomatoes with garlic"

这将创建一个名为'sauce'的新环境变量(第一个示例),其值为'crushed tomatoes'。

在下一个任务中,您可以在任务配置屏幕中使用$(sauce)或在powershell脚本中使用$ env:sauce来读取它。

有关如何使用它的更多信息,请参阅https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/release/variables?tabs=batch

答案 1 :(得分:2)

@Rodrigo Werlang的建议可以起作用,但是set变量的作用域是任务设置所在的作业。 到今天为止,这是一个已知的限制,已记录在here中。

  

要从脚本定义或修改变量,请使用task.setvariable logging命令。 请注意,更新后的变量值的范围仅限于正在执行的作业,并且不会跨作业或阶段流动。变量名将转换为大写,而字符“。”将转换为大写。和“”替换为“ _”。