Подтвердить что ты не робот

Как настроить установку Maven в Jenkins на отдельный Slave node?

Симптомы

Если я создаю задание Maven в Jenkins (New Item = > Maven project) со всеми значениями по умолчанию и запустил его, я получаю эту ошибку:

Started by user anonymous
Building on master in workspace /var/lib/jenkins/jobs/job_name/workspace
ERROR: A Maven installation needs to be available for this project to be built.Either your server has no Maven installations defined, or the requested Maven version does not exist.
Finished: FAILURE

Maven отлично работает из командной строки только с mvn.

Неприемлемое обходное решение

Существует общая система Jenkins для установки Maven: Управление Jenkins = > Настройка System = > Установка Maven/Maven. И если я добавлю установку Maven с помощью этого веб-интерфейса (предоставив предварительно установленный путь в MAVEN_HOME как /usr/share/maven), задание выполняется УСПЕШНО.

Вопрос: почему это глобальная конфигурация Jenkins, а не Slave-specific?

Глобальная конфигурация Jenkins не имеет смысла: Maven запускается на Slave, а не на Jenkins.

Зоопарк Slaves, где выполняются задания Jenkins, может содержать ведомые устройства с различными платформами, операционными системами, средами, где разные версии Maven установлены в разных местах.

Вопрос: Как мне настроить установку Maven для ведомого node?

Настройка переменных окружения, таких как MAVEN_HOME и M2_HOME, на тот же путь для всей системы на Slave node не работает.

Версия

Оба Jenkins Master и Slave - это хосты Linux. Версия Jenkins: 1.598

4b9b3361

Ответ 1

Предполагая, что на вашем подчиненном устройстве установлены Java и Maven:

  • Перейдите к разделу Управление Jenkins → Управление узлами
  • Нажмите значок конфигурации на node, который вы хотите настроить
  • Прокрутите вниз до "Node" Свойства "и отметьте галочкой" Места расположения инструментов "
  • Заполните параметры Java и Maven.

Теперь он должен работать (даже если вы сконфигурировали установку Maven на главном сервере).

Ответ 2

Если вы НЕ добавляете Maven в конфигурацию Master, и вы просто устанавливаете его на каждом подчиненном устройстве со своими, возможно, разными переменными среды (пример с версией 3.2.5).

M2_HOME=C:\apache-maven-3.2.5
M2=C:\apache-maven-3.2.5\bin
Path+=;C:\apache-maven-3.2.5\bin

то каждый подчиненный Jenkins будет использовать Maven с локальными настройками.

Ответ 3

Для меня решение состояло в том, чтобы перейти к управлению Jenkins → Global Tool Configuration и настроить там maven. Вы можете получить доступ к этому через /configureTools (например: http://your-ip:8080/jenkins/configureTools)

Пример: Установка Maven

  • Имя: my_maven_3.3.9
  • MAVEN_HOME:/usr/share/maven

Дополнительные настройки для других обычных инструментов в /configureTools:

Git установки

  • Имя: my_git_2.11.0
  • Путь к исполняемому файлу Git:/usr/bin/git

Установка JDK

  • Имя: my_jdk_1.8.0_161
  • JAVA_HOME:/opt/jdk/jdk1.8.0_161