【问题标题】:How to persist variables between vNext phases如何在 vNext 阶段之间持久化变量
【发布时间】:2017-12-07 15:05:02
【问题描述】:

我正在尝试编写 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")

然后在“请求覆盖”无代理阶段有一个自定义条件

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

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

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

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

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

【问题讨论】:

    标签: azure-pipelines-release-pipeline vnext


    【解决方案1】:

    变量暂时不能在另一个阶段持久化。变量的值将使用为未由 Write-Host 更改的变量定义的原始值。

    variables not persistent between phases有问题,可以跟进。

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 2019-03-25
      • 2016-01-29
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多