Дженкинс автоматически добавляет ПУТЬ с помощью пути к java и ant. Как отключить?

#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 (на самом деле, любая переменная, которая начинается с «ПУТЬ »

https://github.com/jenkinsci/jenkins/blob/c904989067aa699ea63d043c44f6ea905cb9c5d5/core/src/main/java/hudson/EnvVars.java#L144

Обходной путь состоит в том, чтобы ввести пустую PATH JDK= переменную, чтобы полностью отключить добавление или ввести PATH JDK=/path/to/proper/jdk .

Кроме того, поскольку EnvVars extends TreeMap вы можете ввести другую переменную: PATH ZZZ=/path/to/something которая добавляется позже, чем PATH JDK потому, что Дженкинс повторяет такие переменные в алфавитном порядке.

Наконец, можно настроить фиктивный JDK без исполняемых файлов и выбрать этот фиктивный JDK в раскрывающемся списке задания.