本文主要记录了下Jenkins升级插件过程中出现的场景
起因
因项目需要安装个插件,本以为简简单单装个插件就行,奈何手贱点到了更新所有插件导致出现下面的页面:
这就导致用到这个插件的项目完全不能用了,无奈升级Jenkins
过程
直接在配置管理下点击下载,进行升级
然后问题来了,左等右等一直不结束,于是到服务器上手动启服务,于是问题来了
[root@Jessiestart software]# service jenkins restart
Restarting jenkins (via systemctl): Job for jenkins.service failed because the control process exited with error code. See "systemctl status jenkins.service" and "journalctl -xe" for details.
按照提示使用 systemctl status jenkins.service 命令查看Jenkins服务的状态:
Jenkins requires Java versions [17, 11] but you are running with Java 1.8 from /usr/lib/jvm/java
问题很明显Java版本不对,于是果断下载了的java17:
wget https://download.oracle.com/java/17/archive/jdk-17.0.5_linux-x64_bin.tar.gz
考虑到很多服务都还是基于java8的,所以不改贸然替换成17,所以对jenkins环境进行配置:
vim /etc/init.d/jenkins
candidates="
/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-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/bin/java
/home/lzy/java/jdk-17.0.5/bin/java #修改成java17路径
"
你以为到这就结束了?没想到后面还有坑,替换完以后满心期待启动jenkins服务:
service jenkins start
然而并没成功,报无法识别MaxPermSize参数,于是:
vim /etc/sysconfig/jenkins
## Type: string
## Default: "-Djava.awt.headless=true"
## ServiceRestart: jenkins
#
# Options to pass to java when running Jenkins.
#
#JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m"
JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
修改后启动不报错了,但是启动失败。然后毫无头绪,后面一不小心看了下jenkins启动日志发现java17还有几个参数不支持,到启动脚本中注释掉相关参数后完美启动:
具体报错:
Exception in thread "main" java.lang.IllegalArgumentException: Unrecognized option: --handlerCountMax=100
at winstone.cmdline.CmdLineParser.parse(CmdLineParser.java:52)
at winstone.Launcher.getArgsFromCommandLine(Launcher.java:399)
at winstone.Launcher.main(Launcher.java:369)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at executable.Main.main(Main.java:355)
Running from: /usr/lib/jenkins/jenkins.war
Exception in thread "main" java.lang.IllegalArgumentException: Unrecognized option: --handlerCountMaxIdle=20
at winstone.cmdline.CmdLineParser.parse(CmdLineParser.java:52)
at winstone.Launcher.getArgsFromCommandLine(Launcher.java:399)
at winstone.Launcher.main(Launcher.java:369)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at executable.Main.main(Main.java:355)
解决方法:
JAVA_CMD="$JENKINS_JAVA_CMD $JENKINS_JAVA_OPTIONS -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR"
PARAMS="--logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon"
[ -n "$JENKINS_PORT" ] && PARAMS="$PARAMS --httpPort=$JENKINS_PORT"
[ -n "$JENKINS_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --httpListenAddress=$JENKINS_LISTEN_ADDRESS"
[ -n "$JENKINS_HTTPS_PORT" ] && PARAMS="$PARAMS --httpsPort=$JENKINS_HTTPS_PORT"
[ -n "$JENKINS_HTTPS_KEYSTORE" ] && PARAMS="$PARAMS --httpsKeyStore=$JENKINS_HTTPS_KEYSTORE"
[ -n "$JENKINS_HTTPS_KEYSTORE_PASSWORD" ] && PARAMS="$PARAMS --httpsKeyStorePassword='$JENKINS_HTTPS_KEYSTORE_PASSWORD'"
[ -n "$JENKINS_HTTPS_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --httpsListenAddress=$JENKINS_HTTPS_LISTEN_ADDRESS"
[ -n "$JENKINS_HTTP2_PORT" ] && PARAMS="$PARAMS --http2Port=$JENKINS_HTTP2_PORT"
[ -n "$JENKINS_HTTP2_LISTEN_ADDRESS" ] && PARAMS="$PARAMS --http2ListenAddress=$JENKINS_HTTP2_LISTEN_ADDRESS"
[ -n "$JENKINS_DEBUG_LEVEL" ] && PARAMS="$PARAMS --debug=$JENKINS_DEBUG_LEVEL"
[ -n "$JENKINS_HANDLER_STARTUP" ] && PARAMS="$PARAMS --handlerCountStartup=$JENKINS_HANDLER_STARTUP"
#[ -n "$JENKINS_HANDLER_MAX" ] && PARAMS="$PARAMS --handlerCountMax=$JENKINS_HANDLER_MAX"
#[ -n "$JENKINS_HANDLER_IDLE" ] && PARAMS="$PARAMS --handlerCountMaxIdle=$JENKINS_HANDLER_IDLE"
[ -n "$JENKINS_EXTRA_LIB_FOLDER" ] && PARAMS="$PARAMS --extraLibFolder=$JENKINS_EXTRA_LIB_FOLDER"
[ -n "$JENKINS_ARGS" ] && PARAMS="$PARAMS $JENKINS_ARGS"
if [ "$JENKINS_ENABLE_ACCESS_LOG" = "yes" ]; then
PARAMS="$PARAMS --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/log/jenkins/access_log"
fi
具体的报错信息当时没截图 ,就凑活看吧~~
版权声明:本文为CooooolLiu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。