Логические операторы токенов условных шагов Jenkins

Я вставляю переменную среды из файла myprop.property, который имеет содержимое:

var1 = y
var2 = y

Этапы сборки:
1. Введите переменные среды:

Путь к файлу свойств: $ {JENKINS_HOME} /myprop.propertie


  1. Выполнить пакетную команду Windows (чтобы убедиться, что переменная введена успешно)

echo var1 =% var1%
echo var2 =% var2%

  1. Шаги состояния (несколько)

Выполнить ?: логическое условие
Токен: $ {ENV, var = "var1"} || $ {ENV, var = "var2"}
Действия, выполняемые при выполнении условия: echo Да, работает!

Запустите сборку, условие на шаге 3 никогда не выполняется, а на шаге 2 отображаются правильные значения переменных. Я пробовал условия и операторы:

var1 = y, var2 = y: $ {ENV, var = "var1"} || $ {ENV, var = "var2"}
var1 = y, var2 = y: $ {ENV, var = "var1" } | $ {ENV, var = "var2"}

var1 = y, var2 = n: $ {ENV, var = "var1"} || $ {ENV, var = "var2"}
var1 = y, var2 = n: $ {ENV, var = "var1" } | $ {ENV, var = "var2"}

Прописные или строчные буквы значений не имеют значения. Я использую jenkins 1.641 на Windows 7 Pro.
Если я использую только один, например $ {ENV, var = "var1"} в поле токена, все работает должным образом.


person Heinz    schedule 26.01.2016    source источник


Ответы (3)


Попробуйте вместо этого, у меня это сработало, нам нужно упомянуть логическое условие с токеном, указанным на изображении.

введите здесь описание изображения

person Satish Manohar    schedule 26.04.2018
comment
Можете ли вы опубликовать поля ввода формы в своем ответе, чтобы разрешить копирование и вставку, и объяснить, почему это может быть хорошим решением? - person Nico Haase; 26.04.2018

Это работает, измените шаг 3 на:

Выполнить ?: Или
Логическое условие
Токен: $ {ENV, var = "var1"}
Или
Логическое условие
Токен: $ {ENV, var = "var2"}
Никогда

это фактически три условия. выполнение сначала утверждает первое условие, если оно выполняется, прекратить проверку; если не выполнено, утверждает второе; и так далее до последнего условия Никогда, означающего, что если ни одно из условий не выполняется, выполнение шага прекращается.

person Heinz    schedule 26.01.2016

Я вижу, что мой пост вызвал большой интерес. Вот то, над чем я в конечном итоге работал.

Использование соответствия регулярного выражения кажется более удобным для чтения, чем использование логического условия.

Если используется логика «ИЛИ»,

? = Regular expression match
expression = ${ENV,var="var1"}|${ENV,var="var2"}
Label = Y

Обратите внимание, что логический оператор - это одинарный '|', не двойной '||'.

если используется логика «И»,

? = Regular expression match
expression = ${ENV,var="var1"}${ENV,var="var2"}
Label = YY

expression - это просто конкатенация двух переменных, и Label тоже.

person Heinz    schedule 09.05.2018