如何在vNext阶段之间保留变量

时间:2017-12-06 19:35:52

标签: azure-pipelines-release-pipeline vnext

我正在尝试编写VSTS / vNext发布过程来禁用F5负载均衡器池中的释放目标,例如:

Disable-PoolMembers (logfile) [run on agent phase / Powershell script]
if that will cause an outage
    ask for override          [agentless phase]
    if override
        Disable-PoolMembers   [run on agent phase / Powershell script]
Wait for Validation           [agentless phase]
Enable-PoolMembers (logfile)  [run on agent phase / Powershell script]

当我的Disable-PoolMembers.ps1检测到禁用所请求的池成员会导致池没有可用/已启用成员时,它将设置一个vsts变量:

Write-Output ("##vso[task.setvariable variable=OutageCondition;]true")

然后在'ask for override'无代理阶段,有一个自定义条件

and(succeeded(), eq(variables['OutageCondition'], 'true'))

但是覆盖无代理阶段永远不会执行。

我在各个阶段添加了一些内联的PowerShell脚本来显示变量值。 在Disable-PoolMembers阶段,我看到OutageCondition值设置为true,但在Enable-PoolMembers代理阶段,它被设置为false。 因此,使用日志记录命令设置的变量似乎仅在它们设置的阶段持续存在。

我已经尝试过根本没有定义变量并在powershell脚本中动态设置它具有相同的结果(值在相位内设置;但在后续阶段不可用)。 我已经尝试将VSTS中的变量设置为Release范围,并且该变量在其定义的值的所有阶段都可用,但它的Powershell更改值仅在设置它的阶段可用。

这是预期的行为:## vso只影响阶段内的值吗? 我能做些什么来使改变在后续阶段持续存在? 有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

目前,变量无法在另一个阶段保留。变量的值将使用为Write-Host更改的变量定义的原始值。

variables not persistent between phases存在问题,您可以跟进。