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 там.