#jenkins #jenkins-pipeline #jenkins-groovy
#дженкинс #дженкинс-конвейер #дженкинс-заводной
Вопрос:
Я видел разные способы ссылки на переменные в декларативных конвейерах Дженкинса. Я хотел бы знать, есть ли какая-либо разница в следующих способах ссылки на переменную?
${env.VAR}
${VAR}
$VAR
Ответ №1:
"${VAR}"
и "$VAR"
эквивалентны. Вы используете фигурные скобки, чтобы отделить имя переменной от остальной части строки, в которую вы интерполируете переменную, чтобы убедиться, что интерпретатор не прочитает больше, чем вы хотите, в качестве имени переменной. См http://docs.groovy-lang.org/latest/html/documentation/#_string_interpolation за подробностями. Позвольте мне продемонстрировать это.
Рассмотрим следующий фрагмент:
VAR="foo"
"$VARbar"
Это приведет к ошибке, поскольку VARbar
недопустимая переменная в этой области.
Но если вы попытаетесь:
VAR="foo"
"${VAR}bar"
, тогда вы получите «foobar» в результате, как и ожидалось.
Теперь о env.VAR
форме, я все еще не мог найти убедительных доказательств того, в чем разница. Я думаю, что Дженкинс автоматически обрабатывает все глобальные переменные как переменные ENV, похожие на то, как работают скрипты Make и Bash, но мне бы хотелось увидеть фактическую ссылку на это поведение. ~ Я слишком ленив, чтобы проверить это полностью. ~