Jenkins升级插件引发的一系列问题

本文主要记录了下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版权协议,转载请附上原文出处链接和本声明。