Переменные среды Powershell для пакетной команды Windows Jenkins - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть сценарий PowerShell, который нужно выполнить как шаг сборки в jenkins, и мне нужно передать ему переменную окружения

powershell -File .\Build.ps1 -Version $env:APP_VERSION_NUMBER

APP_VERSION_NUMBER - это переменная окружения, установленная плагином номера версии Jenkins.

По некоторым причинам параметр -Version никогда не устанавливается, и я вижу только $env:APP_VERSION_NUMBER в выводе журнала консоли.

Это проблема синтаксиса?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Оказывается, это действительно проблема синтаксиса. Исправление выглядит следующим образом

powershell -File ".\Build.ps1" -Version %APP_VERSION_NUMBER%

enter image description here

0 голосов
/ 06 сентября 2018

Когда вы используете параметр -File интерфейса командной строки PowerShell , аргументы , передаваемые в сценарий, обрабатываются как литералы , поэтому, если вы вызывая командную строку не из PowerShell , $env:APP_VERSION_NUMBER является , а не расширенным.

Чтобы заставить target PowerShell обрабатывать аргументы, вы должны использовать -Command вместо -File:

powershell -Command .\Build.ps1 -Version $env:APP_VERSION_NUMBER

Однако теперь, когда мы знаем, что вы вызываете командную строку через cmd.exe (пакетный файл) из Jenkins (шаг сборки типа Execute Windows batch command) более простой ответ - на позволить cmd.exe расширить ссылку на переменную среды, используя ее синтаксис %<envVarName>% :

powershell -File .\Build.ps1 -Version "%APP_VERSION_NUMBER%"

Примечание. Заключение ссылки на переменную среды в "..." не является строго обязательным для номера версии, но является хорошей привычкой для формирования, поэтому значения со встроенными пробелами или другими метасимволами оболочки также передаются правильно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...