Интерполяция строки переменной среды Jenkins для настройки настраиваемой рабочей области

Я использую многоотраслевой конвейер в Jenkins, и мне нужно динамически установить имя каталога настраиваемой рабочей области на основе имени создаваемой ветки. Когда я определяю настраиваемую рабочую область для конвейера, я пытаюсь получить доступ к переменной среды, содержащей имя ветки, следующим образом:

pipeline {

  agent {

    node {

      label 'master'

      customWorkspace 'some/path/${BRANCH_NAME}'

Однако в течение git init рабочего пространства интерполяция строк не выполняется. Вместо того, чтобы вставлять любое имя ветки в строку, он пытается установить имя рабочей области как '${BRANCH_NAME}' без интерполяции переменной имени ветки. Если я интерполирую переменную за пределами блока agent (например, если я интерполирую переменную в блоке stage), интерполяция строки происходит отлично, и я могу получить имя ветки от Jenkins.

В чем может быть причина этой проблемы? Есть ли другие способы установить настраиваемое рабочее пространство на основе имени ветки в многоотраслевом конвейере?

Спасибо!


person Prathamesh Shenoy    schedule 21.10.2020    source источник


Ответы (1)


Интерполяция строк работает с двойными кавычками, но не работает с одинарными кавычками. Когда я меняю синтаксис на следующий, он работает:

pipeline {

  agent {

    node {

      label 'master'

      customWorkspace "some/path/${BRANCH_NAME}"

Обратите внимание на двойные кавычки, используемые в определении customWorkspace.

Очевидно, Groovy не может выполнять интерполяцию строк для строк в одинарных кавычках. Однако по какой-то причине интерполяция строк в строках, заключенных в одинарные кавычки, работает вне блока agent (например, в блоке stage), но отказывается работать в приведенном выше примере.

person Prathamesh Shenoy    schedule 21.10.2020
comment
Строковая интерполяция не работает для строк с одинарными кавычками (ни в коем случае). Это предполагаемое поведение, как вы можете видеть в документации здесь: groovy-lang.org/syntax. html # _string_interpolation - person smelm; 21.10.2020