Невозможно определить, что делает withEnv в Jenkinsfile - PullRequest
1 голос
/ 12 января 2020

Я только начал писать Jenkinsfile. Я просматривал следующие два URL-адреса, чтобы узнать, как создать приложение Java, pu sh для Nexus, а затем вызвать Ansible для развертывания.

Redhat Jenkinsfile description

Actual Jenkinsfile

Во второй ссылке несколько раз упоминается следующее, функцию которого я не могу понять:

withEnv(["PATH+MAVEN=${tool 'm3'}/bin"])

Что я могу найти из net является то, что withEnv используется для создания / переопределения переменных среды. Но что делает ${tool 'm3'}/bin? Обычно синтаксис withEnv равен VARIABLE_NAME=value/expression.

Ответы [ 2 ]

1 голос
/ 18 января 2020

В дополнение к ответу @ metalisticpain, есть некоторая фоновая конфигурация директивы tools на самом сервере Jenkins, которая конфигурирует пути установки, которые будут использоваться.

Допустим, у вас есть jdk-1.8.0 устанавливается в качестве имени инструмента на сервере Jenkins, затем его можно использовать в Jenkinsfile следующим образом:

withEnv(["PATH+JDK=${tool 'jdk-1.8.0'}/bin"])

Взято из документации, указанной выше:

имя инструмента должно быть предварительно настроено в Jenkins в разделе Управление Jenkins → Глобальный инструмент → Конфигурация.

1 голос
/ 13 января 2020

${} подставляет команду / переменную в GString. См. groovy документы по интерполяции строки. Судя по всему, было бы безопасно предположить, что tool 'm3' возвращает путь установки, который затем добавляется / bin.

Таким образом, конечный результат будет

PATH+MAVEN=/my/path/to/m3/etc/bin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...