java - java:在 Jenkins 管道中运行 Ant 时找不到
问题描述
我在通过 Jenkins 管道运行 ant 时遇到问题。运行 JenkinsFile 时出现以下错误。
Started by user xxxxxx
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/xxxxxx_workspace
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] tool
[Pipeline] tool
[Pipeline] sh
[xxxxxx_workspace] Running shell script
+ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (IcedTea 3.6.0) (Alpine 8.151.12-r0)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
[Pipeline] withAnt
[Pipeline] {
[Pipeline] sh
[xxxxxx_workspace] Running shell script
+ ant -d -version
/var/jenkins_home/tools/hudson.tasks.Ant_AntInstallation/ant_1_10_5/bin/ant: exec: line 1: /var/jenkins_home/tools/hudson.model.JDK/jdk_8u181/jre/bin/java: not found
[Pipeline] }
[Pipeline] // withAnt
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE
我的 JenkinsFile 如下:
node {
stage('Test') {
env.JAVA_HOME="${tool 'jdk_8u181'}"
env.ANT_HOME="${tool 'ant_1_10_5'}"
env.PATH = "${env.JAVA_HOME}/bin:${env.ANT_HOME}/bin:${env.PATH}"
sh "java -version"
withAnt(installation: 'ant_1_10_5', jdk: 'jdk_8u181') {
// echo "Test ant"
sh "ant -d -version"
}
}
}
我在 Jenkins 全局工具配置中设置了 Java 和 Ant
JDK 设置截图 https://i.stack.imgur.com/DdMRv.png
Ant 设置截图 https://i.stack.imgur.com/WQr7v.png
JDK 和 Ant 的文件路径可以确认是否可用。请注意,我使用的是 docker,因此 /var/jenkins_home 已安装到 /opt/jenkins 但您可以在控制台输出中看到 'sh "java -version"' 仍然有效
[root@jenkins jre]# ls -al /opt/jenkins/tools/hudson.model.JDK/jdk_8u181/jre/bin/java
-rwxr-xr-x 1 centos centos 7734 Jul 7 16:06 /opt/jenkins/tools/hudson.model.JDK/jdk_8u181/jre/bin/java
[root@jenkins jre]# ls -al /opt/jenkins/tools/hudson.tasks.Ant_AntInstallation/ant_1_10_5/bin/ant
-rwxr-xr-x 1 centos centos 11638 Jul 19 10:54 /opt/jenkins/tools/hudson.tasks.Ant_AntInstallation/ant_1_10_5/bin/ant
[root@jenkins jre]#
解决方案
注意
[xxxxxx_workspace] Running shell script
+ java -version
openjdk version "1.8.0_151"
^^^
但
line 1: /var/jenkins_home/tools/hudson.model.JDK/jdk_8u181/jre/bin/java: not found
^^^
当您运行时,java -version
您将获得 PATH 中的任何内容。在您的实际编译中,您试图在不同的特定路径上执行 java。根据错误消息,路径很可能不存在。
推荐阅读
- javascript - 我对从 webapi 到 angularjs 和 html 的 get 方法有疑问
- mysql - 查询:等于值不等于
- javascript - 如何在three.js中移动其位置时保持相机旋转指向原点?
- python - 复制文件夹和子文件夹,但仅使用 python 复制子文件夹中的第一个文件
- git - Git 尝试提交到 github 时抛出错误
- r - 基于数据框和向量之间的部分匹配过滤行
- python - 如何在另一列中保留最常出现的重复值
- angular - 我安装“@angular/cdk”并在导入 DragDropModule 时出错,我做错了什么?
- formula - 如何建立一个公式来隔离 Netsuite 中应收账款账龄的贷记金额?
- keytool - 警告:使用 -cacerts 选项访问 cacerts 密钥库