Jenkins 自动将 PATH 添加到 java 和 ant 的路径。如何禁用?

Jenkins auto-prepends PATH with path to java and ant. How to disable?

在自由格式项目中,我使用“注入环境变量”:

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}

但是,在 shell 脚本中 $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?

Updjenkins_shell 脚本添加了除 /u01/jenkins/jdk1.7.0_55/bin 之外的所有条目。现在已修复。但我仍然不知道是谁在添加第一个条目 - java 的路径。

如果在 Manage Jenkins -> Global Tool Configuration 中配置了 JDK,则会创建一个全局环境变量:PATH+JDK=/u01/jenkins/jdk1.7.0_55/bin 并在执行 shell 脚本之前 Jenkins 预先添加 PATHPATH+JDK (实际上,任何以“PATH+”

开头的变量

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/somethingPATH+JDK 更晚,因为 Jenkins 按字母顺序迭代此类变量。

最后,可以在作业的下拉列表中配置一个没有可执行文件的虚拟 JDK 和 select 这个虚拟 JDK。