В чем разница между $ {env.VAR}, $ {VAR} или $ VAR способом определения переменных декларативного конвейера Дженкинса?

#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, но мне бы хотелось увидеть фактическую ссылку на это поведение. ~ Я слишком ленив, чтобы проверить это полностью. ~