GoCD Agent не распознает переменную среды JAVA_HOME

Я тестирую конвейеры непрерывной доставки с помощью GoCD. Сервер и агент находятся в отдельных контейнерах Docker, поставляемых с Oracle Java 8.
Я создал тестовое задание, которое проверяет мой Git-репозиторий и использует maven для компиляции. В качестве тестовой команды я использую простую mvn clean build,

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

07:50:59.395 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project xxxxx: Compilation failure 07:50:59.395 [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

Когда я бегу mvn Команда локально внутри контейнера все работает отлично. После долгих поисков решения я обнаружил подсказки о проблемах с переменными среды Java и Maven. В обеих системах вывод для этих переменных кажется правильным:

go@d86b9572ed7e:/tmp$ echo $M2_HOME $JAVA_HOME /usr/share/maven /usr/lib/jvm/java-8-oracle

Окончательное решение, которое я закончил, это установка $JAVA_HOME переменная в качестве переменной среды на сервере GoCD в качестве настройки конвейера. Затем все работает нормально, но я действительно не понимаю, почему системные переменные не выбираются агентом.

2 ответа

Решение

Агент имеет профиль, который он использует для выполнения заданий и задач. Расположение по умолчанию: /etc/default/go-agent Add

export JAVA_HOME="/usr/lib/jvm/java-8-oracle/"

в этот файл.

Вы также можете указать переменные среды в конвейерах и этапах. Если вы используете общий шаблон для этапов, вы можете определить JAVA_HOME там.

Другие вопросы по тегам