我正在尝试编写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只影响阶段内的值吗? 我能做些什么来使改变在后续阶段持续存在? 有更好的方法吗?
答案 0 :(得分:2)
目前,变量无法在另一个阶段保留。变量的值将使用为Write-Host更改的变量定义的原始值。
variables not persistent between phases存在问题,您可以跟进。