VSTS Release - замена переменной среды во время выполнения - PullRequest
0 голосов
/ 12 июня 2018

Я сделал релиз в vsts с некоторыми переменными среды.

Одна из этих переменных среды выглядит следующим образом:

#Array
[ { "name":"password", "value":"thisismypassword" }, { ... } ]

Однако я получаю выходной параметр от одного извыпустить задачи, которые возвращают пароль.Поэтому я подумал сделать «тег» и заменить его, когда вернется выходной параметр:

[ { "name":"password", "value":"<Password>" } ]

Когда мой выходной параметр вернется, я могу создать задачу powershell, чтобы заменить «тег» реальным паролем.,Однако для замены это должна быть либо строка, либо допустимый массив powershell.Если я непосредственно использую переменную окружения, она разбивается на первое «:» с сообщением об ошибке (потому что это не законная команда / формат powershell);

#This breaks    
$var = $(environment_variable) 

Поэтому я подумал преобразовать ее вString, замените его, преобразуйте его обратно в объект json и установите его обратно в переменную окружения:

$Setting = ConvertFrom-Json -InputObject '$(environment_variable)'
$Setting = $Setting -replace "<Password>", "$(Output_Password)"

#Tried both below
$Setting_JSON - ConvertTo-Json -InputObject $Setting
$Setting_JNSON = [Newtonsoft.Json.JsonConvert]::SerializeObject($Setting, [Newtonsoft.Json.Formatting]::None)

Write-Host "##vso[task.setvariable variable=$(environment_variable)]$Setting_JSON"

Однако они создают строку json, которая имеет другой формат, и шаг, который использует эту переменную, непонять;

#Output
["@{name=Password;value=thisisapasswordvalue}"]

#Expected (and needed) Output
[ { "name":"password", "value":"thisisapasswordvalue" } ]

1 Ответ

0 голосов
/ 19 июня 2018
#This breaks    
$var = $(environment_variable) 

Для этого вы можете использовать это:

$var = $Env:variablename

Это работает на моей стороне:

$Setting = $env:Var1
$Setting = $Setting -replace "<Password>", "NewValue"
...