最近又开始使用jenkins了,遇到一个问题,开发本地使用的jdk是1.7,而我们jenkins由于需要对docker的插件的支持必须使用1.8。
这样就导致了有的开发的代码在jenkins去代码库checkout代码的时候,有的代码能被jenkins打包,但是有的代码拉取下来登录到jenkins宿主机
能够使用mvn install打包,但是不能被jenkins打包,出现这个问题主要是mvn使用的是系统的JAVA_HOME变量,如果降低java版本会导致jenkins无法使用
而mvn是不会受到影响,所以要解决这个jdk版本共存问题
过程如下:
1、官网现在一个免安装版的jdk1.8,解压到任何目录,我这里是解压到/usr/java/
[root@localhost java]# ll
total 8
lrwxrwxrwx. 1 root root 16 Mar 21 09:55 default -> /usr/java/latest
drwxr-xr-x. 8 root root 4096 Mar 21 09:55 jdk1.7.0_55
drwxr-xr-x. 9 root root 4096 Mar 21 09:44 jdk1.8.0_171
lrwxrwxrwx. 1 root root 21 Mar 21 09:55 latest -> /usr/java/jdk1.7.0_55
在profile最后面添加如下:
[root@localhost java]# cat /etc/profile JAVA_HOME=/usr/java/default CLASSPATH=$JAVA_HOME/lib PATH=$PATH:$JAVA_HOME/bin export PATH CLASSPATH JAVA_HOME
重新打开终端可以查看maven版本
主要是这个mvn对JAVA_HOME有要求,因为这个变量写入了mvn可执行文件中
[root@echqdslavejenkins_ops opt]# /usr/local/maven/bin/mvn --version
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00)
Maven home: /usr/local/maven
Java version: 1.7.0_55, vendor: Oracle Corporation
Java home: /usr/java/jdk1.7.0_55/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
这里我使用的jenkins为rpm包。
wget https://prodjenkinsreleases.blob.core.windows.net/redhat-stable/jenkins-2.150.3-1.1.noarch.rpm
[root@localhost opt]# yum localinstall jenkins-2.150.3-1.1.noarch.rpm
[root@echqdslavejenkins_ops opt]# vim /etc/init.d/jenkins candidates=" /usr/java/jdk1.8.0_171/bin/java /etc/alternatives/java /usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java /usr/lib/jvm/java-1.7.0/bin/java /usr/lib/jvm/jre-1.7.0/bin/java /usr/bin/java "
启动jenkins就行了
/etc/init.d/jenkins start