在两个代理阶段之间传递释放变量

问题描述 投票:6回答:4

我正在使用TFS内部部署。我的问题是,在发布期间,我有两个代理阶段由人工干预分开。

在第一个代理阶段,我设置了一个变量:

Write-Verbose $("##vso[task.setvariable variable={0};]{1}" -f $variablename, $variable)

问题是在第二个代理阶段,即使同一个代理用于第二个发布阶段,该变量也不再存在。

如何在同一版本中在两个代理阶段之间传递变量?

tfs azure-devops azure-pipelines-release-pipeline
4个回答
8
投票

目前,无法在两个代理阶段(和环境)之间保留变量(无论是PowerShell变量还是VSTS用户定义的变量)。

还有一个相关问题Variables set via logging commands are not persistent between agents,你可以跟进。

现在的解决方法是在下一个代理阶段再次定义变量。


1
投票

您可以使用TFS Rest API在代理阶段之间共享变量,并在发行版中创建新变量。

您可以创建一个帮助程序模块来完成此任务。

  1. Get the release使用环境变量$Env:Release_ReleaseId
  2. 使用Add-Member将NoteProperty添加到步骤1中返回的版本的变量哈希表中,其中名称是所需的变量名称,值为ConfigurationVariableValue
  3. 加上变量的Save the release

要使用此方法,您可以在第一个代理中设置变量。然后,在第二个代理中,您可以使用$(VariableName)语义简单地读取TFS变量。


0
投票

我已经使用“可变脱水任务”将值写入构建管道中的工件文件夹。然后我用inline-powershell读取了json。目前,我正在阅读我的发布管道中的每个任务,这对我来说似乎很精神,但它有点奏效。你应该能够设置全局或环境?变量并使用它代替。据推测于2017年修复,但我正在使用2015年。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.