использовать разные JDK для разных сборок Jenkins без рабов - PullRequest
0 голосов
/ 04 января 2019

Ищите способ построить некоторые проекты с Java 8, а некоторые с Java 11 на одном сервере Jenkins без ведомых устройств. Я добавил JDK в глобальные инструменты (Java 11 - это tarball, без инсталлятора) и выбрал JDK в конфигурации проекта. Когда я собираю, он извлекает штраф JDK в каталог инструментов Jenkins, как и ожидалось.

Проблема в том, что JAVA_HOME не установлен, поэтому сборка Maven завершается неудачно.

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

Есть ли способ установить JAVA_HOME на основе выбранного JDK?

Ожидает ли Дженкинс, что JDK будет полностью установлен (добавлен в системный путь) или его достаточно распаковать? Я бы подумал, что необходимость установки в системный путь означала бы, что нам потребуется использовать ведомые устройства.

Мы используем RHEL x64 v7.6.

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Проблема заключалась в том, что каталог верхнего уровня Java tarball был "jdk-11.0.1 + 13". Мне нужно было добавить это в поле инструмента «Подкаталог распакованного архива» в подключаемом модуле настройки глобальных инструментов. После этого Jenkins установил правильный путь PATH и JAVA_HOME.

0 голосов
/ 05 января 2019

Используете ли вы jenkinsfile или декларативный конвейер? Если так, то просто добавьте JAVA_HOME

Пример:

node('master') {
    env.JAVA_HOME="${tool 'jdk-8u45'}"
    env.PATH="${env.JAVA_HOME}/bin:${env.PATH}"
    sh 'java -version'
}

См. Ссылку: https://support.cloudbees.com/hc/en-us/articles/204421664-Select-which-Java-JDK-to-use-in-Pipeline

...