Как переменные среды используются в Jenkins с пакетной командой Windows? - PullRequest
65 голосов
/ 22 декабря 2011

Я пытаюсь использовать переменные среды Jenkins (Global) в моем сценарии xcopy.

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

Ответы [ 2 ]

119 голосов
/ 22 декабря 2011

Я ничего не знаю о Дженкинсе, но похоже, что вы пытаетесь получить доступ к переменным окружения с помощью некоторой формы синтаксиса 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 и различных параметрах расширения.Например, объясняется, как выполнять операции поиска / замены и подстроки.

24 голосов
/ 22 декабря 2011

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

...