Tfs 在两个代理阶段之间传递发布变量

Tfs 在两个代理阶段之间传递发布变量,tfs,azure-devops,azure-pipelines-release-pipeline,Tfs,Azure Devops,Azure Pipelines Release Pipeline,我正在与TFS合作。 我的问题是,在发布过程中,我有两个代理阶段,由手动干预分开 在第一个代理阶段,我设置了一个变量: Write-Verbose $("##vso[task.setvariable variable={0};]{1}" -f $variablename, $variable) 问题是,在第二个代理阶段,这个变量不再存在,即使第二个发布阶段使用了相同的代理 在同一版本中,如何在两个代理阶段之间传递变量?目前无法在两个代理阶段(和环境)之间持久化变量(无论是powershell变

我正在与TFS合作。 我的问题是,在发布过程中,我有两个代理阶段,由手动干预分开

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

Write-Verbose $("##vso[task.setvariable variable={0};]{1}" -f $variablename, $variable)
问题是,在第二个代理阶段,这个变量不再存在,即使第二个发布阶段使用了相同的代理


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

目前无法在两个代理阶段(和环境)之间持久化变量(无论是powershell变量还是VSTS用户定义变量)

还有一个相关的问题,你可以跟进


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

我已经使用“变量任务”将值写入构建管道中的我的工件文件夹。然后,我使用内嵌powershell阅读json。目前,我在发布管道中的每一项任务上都在阅读它,这对我来说似乎是精神上的,但它有点奏效。您应该能够设置全局或env?变量,并改用它。应该在2017年修复,但我用的是2015年

正确的方法是使用Variablegroups在管道之间持久化:

通过使用TFS Rest API并在版本中创建新变量,可以在代理阶段之间共享变量

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

  • 通过使用环境变量
    $Env:Release\u ReleaseId
  • 使用
    addmember
    ,将NoteProperty添加到步骤1中返回的版本的变量哈希表中,其中名称是所需的变量名称,值是
  • 使用添加的变量

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

    是否有计划在将来的任何版本中实现这一点?如果没有,那么解决办法是什么?我几乎什么都试过了。@AhmedIG我们将变量写入drop文件夹中的一个文件,并在下一阶段将它们读回。不太好。变量在代理阶段之间重置。如果变量值是动态的,并且在第一个“作业”(阶段)运行之前是不固定的,该怎么办?i、 例如,代理的unc路径。本博客还展示了如何使用此方法: