> 文章列表 > jenkins的slave节点构建java失败

jenkins的slave节点构建java失败

jenkins的slave节点构建java失败

背景:

节点构建没问题的,为了缓解压力增加了个从节点,但是发现同个应用分配到从节点构建时报错,主节点构建就正常。但是我的从节点是把主节点克隆过去的, 理论环境配置java——maven啥都是一模一样才是。不理解。

报错内容如下:

排查:

一开始我是真以为是代码问题。毕竟编译就一个命令,谁怎想去掉从节点,在master节点构建正常。那肯定是从节点问题了。

找了一圈没找到,坑还是有点多的。

最后在从节点日志里面发现一些异常

 

查看到报错内容:

Checking Java version in the PATH
java version "1.8.0_311"
Java(TM) SE Runtime Environment (build 1.8.0_311-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.311-b11, mixed mode)
[04/17/23 14:53:23] [SSH] Checking java version of /bkb/runtime/jenkins/jdk/bin/java
Couldn't figure out the Java version of /bkb/runtime/jenkins/jdk/bin/java
bash: /bkb/runtime/jenkins/jdk/bin/java: 没有那个文件或目录

检查的时候是测出来我的jdk版本是对的。但是这个找不到文件和目录是啥,

然后在系统信息里面检测到的竟然是openjdk。

就是我红框中和环境变量哪里,我靠,我是jdk呀,因为处理的时候没保存截图,现在截图的变量是正常的。你们对比的时候就看这里。

在从节点机器上查看openjdk竟然真的存在。

[root@jenkins-slave-167 jenkins]# rpm -qa | grep java
java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64
tzdata-java-2021e-1.el7.noarch
java-1.8.0-openjdk-headless-1.8.0.312.b07-1.el7_9.x86_64
javapackages-tools-3.4.1-11.el7.noarch
java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64
python-javapackages-3.4.1-11.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64

解决:

1、第一个是删除默认的openjdk,毕竟我有安装的jdk呢。

 

[root@jenkins-slave-167 jenkins]# rpm -e --nodeps java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64

2、添加环境变量。我用的从节点也是jenkins用户,将root的profile文件的java变量拷贝去jenkins用户变量下。

[root@jenkins-slave-167 bin]# su - jenkins
上一次登录:一 4月 17 14:51:02 CST 2023pts/0 上
-bash-4.2$ 
-bash-4.2$ tail -20f /etc/profileif [ -r "$i" ]; thenif [ "${-#*i}" != "$-" ]; then . "$i"else. "$i" >/dev/nullfifi
doneunset i
unset -f pathmunge. /bkb/runtime/jenkins/.nvm/nvm.shexport JAVA_HOME=/bkb/runtime/jdk1.8.0_311
export MAVEN_HOME=/bkb/runtime/apache-maven-3.3.9
export NODE_HOME=/bkb/runtime/node-v14.17.6-linux-x64
export PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin:$NODE_HOME/bin:JENKINS_HOME=/bkb/runtime/jenkins
^C
-bash-4.2$ more .bashrc 
# .bashrc# User specific aliases and functions# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
fi
export LNAG=en_US.UTF-8
. /bkb/runtime/jenkins/.nvm/nvm.shexport JAVA_HOME=/bkb/runtime/jdk1.8.0_311
export MAVEN_HOME=/bkb/runtime/apache-maven-3.3.9
export NODE_HOME=/bkb/runtime/node-v14.17.6-linux-x64
export PATH=$JAVA_HOME/bin:$PATH:$MAVEN_HOME/bin:$NODE_HOME/bin:JENKINS_HOME=/bkb/runtime/jenkins
-bash-4.2$ 

3、第三个就是那个在从节点报错说找不到java的,给他软连接过去

这个是我的安装目录的/bkb/runtime/jdk1.8.0_311/bin/java

这个是报错的说找不到java的,怀疑是他指定的目录去检查这个jdk存在:/bkb/runtime/jenkins/jdk/bin/java

因为这个jdk目录不存在,所以要新建
[root@jenkins-slave-167 bin]# mkdir -p /bkb/runtime/jenkins/jdk/bin/
[root@jenkins-slave-167 bin]# ln -s /bkb/runtime/jdk1.8.0_311/bin/java /bkb/runtime/jenkins/jdk/bin/java

这样待会检查这个java应该就不会报错了吧。

上面三个步骤去解决了。说实话我是一连改了三个,具体哪个才是绝对正确,不清楚了。都试下吧

然后当然断掉节点,然后重启从节点啊。这个就自己操作吧,不截图了

结果:

接下来看结果吧

链接成功,然后这个检查java也是ok的 

系统信息里面jdk也是ok的环境变量。截图就是在上面让你核对的那里了呢,这里不重复截图了

最后最后尝试下一开始从节点无法构建的java应用