Как сохранить переменные между фазами 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")

А затем в безагентной фазе «запросить переопределение» есть пользовательское условие

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

Но фаза переопределения без агента никогда не выполняется.

Я добавил несколько встроенных сценариев powershell на разных этапах, чтобы показать, что такое значение переменной. В фазе Disable-PoolMembers я вижу, что значение OutageCondition установлено в true, но в фазе агента Enable-PoolMembers оно установлено в false. Таким образом, получается, что переменные, установленные с помощью команд регистрации, сохраняются только на той фазе, в которой они были установлены.

Я пытался вообще не определять переменную и устанавливать ее «на лету» в сценарии powershell с теми же результатами (значение устанавливается на этапе, но недоступно на последующих этапах). И я попытался установить переменную в VSTS в качестве области выпуска, и переменная доступна на всех этапах в ее определенном значении, но ее значение, измененное Powershell, доступно только на этапе, на котором оно установлено.

Это ожидаемое поведение: ##vso влияет только на значения внутри фазы? Могу ли я что-то сделать, чтобы изменения сохранялись на последующих этапах? Есть ли лучший подход?


person Arluin    schedule 06.12.2017    source источник


Ответы (1)


Переменные пока нельзя сохранять в другой фазе. Значение переменной будет использоваться как исходное, определенное для переменной, которую вы не изменили с помощью Write-Host.

Существует проблема с переменными, которые не сохраняются между фазами, вы можете разобраться.

person Marina Liu    schedule 07.12.2017