Как переменные среды используются в Jenkins с командами Windows Batch?

Я пытаюсь использовать переменные окружения Jenkins (Global) в моем xcopy script.

${WORKSPACE} doesn't work
"${WORKSPACE}" doesn't work
'${WORKSPACE}' doesn't work

Ответы

Ответ 1

Я ничего не знаю о Дженкинсе, но похоже, что вы пытаетесь получить доступ к переменным окружения, используя некоторую форму синтаксиса unix - это не сработает.

Если имя переменной - WORKSPACE, то значение расширяется в пакете Windows, используя %WORKSPACE%. Эта форма расширения выполняется во время разбора. Например, это будет печатать для отображения значения WORKSPACE

echo %WORKSPACE%

Если вам нужно значение во время выполнения, вам нужно использовать задержанное расширение !WORKSPACE!. Отсроченное расширение обычно не включено по умолчанию. Используйте SETLOCAL EnableDelayedExpansion, чтобы включить его. Зачарованное расширение часто необходимо, потому что блоки кода в круглых скобках разобраны все сразу, поэтому значение, назначенное внутри блока, не может быть прочитано позже в том же блоке, если вы не используете задержанное расширение.

setlocal enableDelayedExpansion
set WORKSPACE=BEFORE
(
  set WORKSPACE=AFTER
  echo Normal Expansion = %WORKSPACE%
  echo Delayed Expansion = !WORKSPACE!
)

Вышеуказанный результат

Normal Expansion = BEFORE
Delayed Expansion = AFTER

Используйте HELP SET или SET /? из командной строки, чтобы получить дополнительную информацию о переменных среды Windows и различных вариантах расширения. Например, в нем объясняется, как выполнять операции поиска/замены и подстроки.

Ответ 2

В окнах вы должны использовать %WORKSPACE%.