VSTS: передать переменные сборки в задачу Powershell script
В идеале я хотел бы настроить параметры приложения Azure Web App с помощью переменных сборки (на VSTS), например:
![VSTS Build]()
Мы выполняем наши задачи публикации с использованием сценариев Powershell. Чтобы установить параметры приложения, можно использовать следующий script:
param($websiteName, $appSettings)
Set-AzureWebsite -Name $websiteName -AppSettings $appSettings
Я могу передать эти переменные сборки вручную в задачу сборки Powershell script, например:
PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings @{"MyConnectionString" = $(MyConnectionString);"MyRandomService" = $(MyRandomService);"MyRandomServiceClient"=$(MyRandomServiceClient);"MyRandomServicePassword"=$(MyRandomServicePassword)}
Есть ли способ передать все переменные сборки в script без явного указания каждого в хэш-таблице?
Ответы
Ответ 1
Строковые переменные автоматически передаются во все сценарии PowerShell в качестве переменных среды.
Итак, если вы определили переменную myVar
в разделе Variables
. Вы можете получить доступ к нему как $env:myVar
в script. Здесь нужно отметить, что .
преобразуется в _
. Напр. если ваша переменная myVar.config
, вы получите доступ к ней в script как $env:myVar_config
.
Доступные переменные также включают такие переменные, как имя ветки, номер сборки и т.д. Чтобы просмотреть все доступные переменные, запустите определение фиктивной сборки/выпуска и добавьте задачу PowerShell с встроенным типом и запустите Get-ChildItem Env:
. Это покажет вам все доступные переменные среды, и вы сможете увидеть все свои пользовательские определенные переменные.
Более подробная информация доступна здесь
Ответ 2
Переменные уже переданы в PowerShell script при запуске сборки. Если я правильно понял ваш вопрос, вы хотите использовать эти переменные вместе, а не указывать их один за другим, как показано ниже:
PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings $(AllVariables)
Тогда нет никакого способа сделать это.
Если вы хотите уменьшить строки, переданные в PowerShell script, вы можете установить следующую переменную:
VariableName: MyRandomService | Значение: "MyRandomService" = xxxxxxxx
Затем вам просто нужно вызвать PowerShell script с переданным именем переменной.