背景:
主节点构建没问题的,为了缓解压力增加了个从节点,但是发现同个应用分配到从节点构建时报错,主节点构建就正常。但是我的从节点是把主节点克隆过去的, 理论环境配置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/profile
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
. /bkb/runtime/jenkins/.nvm/nvm.sh
export 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.sh
export 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应用