VSTS передает переменные в аргументы скрипта Azure PowerShell
У меня есть несколько задач Azure PowerShell, в которых я хочу передать переменные. В настоящее время я передаю переменные с аргументами скрипта, как на скриншоте:
Проблема с аргументами скрипта состоит в том, что мне придется редактировать их в каждом процессе, если есть изменения. Можно ли иметь только одну переменную, которую я могу связать с несколькими процессами? Я посмотрел на VSTS: передать переменные сборки в задачу скрипта Powershell, но как бы я ни редактировал мои скрипты, они отказываются работать. В этом разделе также не объясняется, должны ли переменные помещаться в переменные процесса или в переменные построения очереди. Вот скрипт, который я пытаюсь автоматизировать:
param
(
[Parameter(Mandatory)]
[String]$NewFileLocation1
)
Set-AzureRmVMCustomScriptExtension -Argument "-NewFileLocation1 $NewFileLocation" -ResourceGroupName Test-RG1`
-VMName VM1 `
-Location northeurope `
-FileUri https://raw.githubusercontent.com/x/assets/master/PowerShell/PS1/PS1/PS1.ps1 `
-Run 'PS1.ps1' `
-Name PS1
PS1.ps:
param
(
[Parameter(Mandatory)]
[String]$NewFileLocation
)
New-Item $NewFileLocation
1 ответ
Вот что я использую:
Param (
[string]$location = $env:location,
...
[string]$tagEnvironment = $env:tagEnvironment
)
Я использую группы переменных библиотеки VSTS, вы можете связать группы переменных с различными конвейерами выпуска.
Чтобы немного подробнее рассказать о том, как использовать вышеупомянутые группы переменных, в Azure DevOps вы можете объявить их в меню конвейеров в подменю библиотеки. На изображении ниже я объявляю группу переменных с именемTailspin Space Game - Release
Затем я могу ссылаться на группы переменных в коде YAML следующим образом:
variables:
- group: 'Timeline CV - Release'
А затем мне пришлось бы передать их в PowerShell в качестве аргументов следующим образом:
- task: PowerShell@2
displayName: 'Run PowerShell Task'
inputs:
filePath: 'path\to\powershell\script\script.ps1'
arguments: '$(groupVar1) $(groupVar2) $(groupVar3)'
Переменные сборки будут доступны для сценария PowerShell без явной передачи их в качестве аргументов таким образом. Однако мне не удалось добиться того же с какой-либо переменной в группе переменных.
Теперь я могу использовать группы переменных в сценарии PowerShell, который вызывается в задаче PowerShell, следующим образом:
$GroupVar1OnPowerShellScript = $env:groupVar1
$GroupVar2OnPowerShellScript = $env:groupVar2
$GroupVar3OnPowerShellScript = $env:groupVar3