CI&CD落地实践3-Jenkins版本升级与踩坑实践
背景
当前环境:
- 操作系统:Linux(CentOS-7.9);
- Java版本:Java8;
- Jenkins版本:2.328;
升级原因:很多插件都不兼容,无法使用,提示要升级版本。
一、升级Jenkins过程
1.遇到的坑1-Java版本过低
确切地说,之前是有过升级成功的经验的,步骤如下:
① 下载最新的jenkins.war包并放到/home/apache-tomcat-9.0.43/webapps目录下;
② 重启apache-tomcat;
③ 访问Jenkins;
但是我在重启后,再次访问Jenkins遇到了如下报错:
在网上查阅后得知,Jenkins从 6 月 28 日发布的 Jenkins 2.357 和9 月 LTS 版本开始,Jenkins 最低需要 Java 11,所以jdk最低要安装到11。
2.安装JDK11
① 在liunx上可以通过如下命令安装:
yum -yinstalljava-11-openjdk*
以上会直接自动安装jdk并配置好环境变量:
② 测试java版本,已经升级到java11:
已安装的java11在/usr/lib/jvm目录下:
3.遇到的坑2-未切换到新安装的Java
重启apache-tomcat,再次刷新Jenkins页面,还是出现前面的404报错:
通过查看Tomcat启动日志发现,Tomcat使用的java版本仍然是java8,说明新安装的java11并没有对apache-tomcat生效,因此还需要特地为apache-tomcat指定java版本。
4.指定apache-tomcat的Java版本
具体修改哪个文件,起初我也不确定,后来在这篇帖子中找到了答案:《启动 Tomcat 遇到 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 问题,已解决》
整个调用链路如下:
- Windows:启动文件startup.sh → catalina.sh → setclasspath.sh,setclasspath.sh 里读取系统的环境变量。
- Linux:启动文件startup.sh → catalina.sh → setclasspath.sh,setclasspath.sh 里读取系统的环境变量。
① 修改Tomcat的bin目录下的setclasspath文件
我的是Linux系统,所以只需要在Tomcat的bin目录下的setclasspath.sh文件中将java版本指定为新安装的java11就可以了
在setclasspath.sh文件最开始位置设置java相关的环境变量:
② 再次重启apache-tomcat,使用的是最新的java11
③ 重新访问Jenkins
此时再次访问Jenkins,就不会出现开头的404报错了,访问正常:
更新成功,Jenkins访问正常,界面焕然一新,版本为升级后的2.387.1版本:
后续如有新版本更新,只需替换jenkins.war包即可,除非有明确的java版本要求。