#jenkins
Вопрос:
В проекте свободной формы я использую «Ввод переменных среды».:
JAVA_HOME=/u01/jenkins/jdk1.8.0_181/jre
PATH=/u01/jenkins/jdk1.8.0_181/jre/bin:/u01/jenkins/apache-maven-3.0.5/bin:${PATH}
Однако в сценариях оболочки $PATH
получает дополнительный префикс:
echo PATH=/u01/jenkins/jdk1.7.0_55/bin:
/u01/jenkins/apache-ant-1.9.6/bin:/u01/jenkins/apache-maven-3.0.5/bin:
/u01/jenkins/DependencyFinder-1.2.1-beta4/bin:
/bin:/u01/jenkins/fly:/u01/jenkins/jdk1.7.0_55/bin:
/u01/jenkins/jdk1.8.0_181/jre/bin:<the-original-path>
Как найти причину этого и, наконец, включить мою java 8 в путь?
Upd: все записи, кроме /u01/jenkins/jdk1.7.0_55/bin
добавляемых jenkins_shell
сценарием. Теперь это исправлено. Но я все еще не знаю, кто добавляет первый путь ввода в java.
Ответ №1:
Если JDK настроен, Manage Jenkins -> Global Tool Configuration
то создается глобальная переменная среды: PATH JDK=/u01/jenkins/jdk1.7.0_55/bin
и прямо перед выполнением сценариев оболочки Дженкинс добавляет PATH
с PATH JDK
(на самом деле, любая переменная, которая начинается с «ПУТЬ »
Обходной путь состоит в том, чтобы ввести пустую PATH JDK=
переменную, чтобы полностью отключить добавление или ввести PATH JDK=/path/to/proper/jdk
.
Кроме того, поскольку EnvVars extends TreeMap
вы можете ввести другую переменную: PATH ZZZ=/path/to/something
которая добавляется позже, чем PATH JDK
потому, что Дженкинс повторяет такие переменные в алфавитном порядке.
Наконец, можно настроить фиктивный JDK без исполняемых файлов и выбрать этот фиктивный JDK в раскрывающемся списке задания.