Как установить переменную лазурного конвейера из PowerShell - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь установить значение переменной конвейера Azure в PowerShell.Я создал одну переменную winversion в лазурном конвейере.Теперь в задаче PowerShell я хочу присвоить некоторые значения переменной winversion.Мой простой вопрос: как я могу изменить значение переменной Azure PipeLine во время выполнения.

Write-Host "Main value is $winversion"

$env:WINVERSION="abhinav";

Write-Host "Modified value is $env:WINVERSION"

Write-Host "Main value is $(winversion)"

Печать первой строки: исходное значение 123

Печать третьей строки: измененное значение abhinav

Печать четвертой строки: 123

Я хочу, чтобы я изменил значение winversion с «123» на «abhinav», чтобы оно фактически изменило значение переменной конвейера на abhinav.

enter image description here

enter image description here

Я хочу обновить эту переменную через Powershell.Я использую один сценарий PowerShell, вызывающий API-интерфейс и пытающийся обновить его переменную, но получая страницу не найденная ошибка: -

param ([строка] $ winVersion

) $ body = "{'определение ': {' id ': 85}

} "$ valueName =" Winver "

$ definitionId = 85

$ User =" "

$ Password = ""

$ base64authinfo = [Преобразовать] :: ToBase64String ([Text.Encoding] :: ASCII.GetBytes (("{0}: {1}" -f $ Пользователь, $ Пароль))))

$ Uri = "https://Muac.visualstudio.com/OSGCXE/_apis/release/releases?api-version=2.0"

$ urlDef =" https://Muac.visualstudio.com/OSGCXE/_apis/release/definitions/" + $ definitionId + "? Api-version = 2.0"

$ definition = Invoke-RestMethod -Headers @ {Authorization = ("Basic {0}" -f $ base64authInfo)} -Метод Получить -Uri $ urlDef

Write-Host $ Definition

$definition.variables. $ valueName.Value = "$ winVersion"

$ DefinitionJson = $ Definition |ConvertTo-Json -Depth 50 -Compress

Write-Host (ConvertTo-Json $ определение -Depth 100)

$ update = Invoke-RestMethod -Headers @ {Authorization = ("Basic {0} "-f $ base64authInfo)} -Методный путь -Uri $ urlDef -Body $ definitionJson -ContentType" application / json "

Write-Host" $ update "

$ buildresponse = Invoke-RestMethod -Method Post -ContentType application / json -Uri $ Uri -Headers @ {Authorization = ("Basic {0}" -f $ base64authinfo)} -Body $ body

write-Host $ buildresponse.status

1 Ответ

1 голос
/ 03 апреля 2019

Как установить переменную лазера в PowerShell

Здесь есть некоторая путаница, вы используете переменную $winversion в сценариях powershell, но в переменной конвейера установлена ​​переменная testvar.

В любом случае, независимо от того, перезаписываем ли мы значение переменной конвейера напрямую, как вы, или используем для перезаписи скрипт "##vso[task.setvariable variable=testvar;]testvalue", значение перезаписи работает только для текущего конвейера сборки. Когда вы используете $(winversion) для получения значения, оно все равно будет извлекать значение из значения переменной конвейера. Чтобы получить текущее значение, вам нужно использовать $env:WINVERSION.

Кроме того, вы сказали:

Я хочу изменить значение winversion с «123» на «abhinav». поэтому он фактически изменяет значение переменной конвейера на abhinav.

Если вы хотите изменить значение переменной конвейера на веб-портале , вам потребуется REST API ( Definitions - Update ), чтобы обновить значение переменной определения конвейера сборки. из задачи сборки.

Существует очень похожая тема, вы можете проверить ответ для деталей:

Как изменить переменную определения выпуска DevOps Azure из задачи выпуска?

Примечание. Измените API на определения сборки:

PUT https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}?api-version=5.0

Надеюсь, это поможет.

...