背景
上周在安装 jenkins 某个插件后,导致很多插件异常,提示需要升级 jenkins,在升级完 jenkins(版本是 2.470) ,处理一堆问题后。还遗留了一个麻烦的 bug 没处理好,就是在Dashboard -> Manager jenkins -> System 保存或者应用,都会发生错误。
jenkins 日志有这个报错
问题排查和处理
通过 Google 查找和 GPT 回答,问题大概率是插件兼容性导致的。查看已经安装的插件,可以通过Dashboard -> Manager jenkins -> Plugins -> Installed plugins 查找到已安装的插件。但是具体排查方式是怎样的,难道是每次禁用和开启插件这样排查么?Jenkins 官档这里面有介绍,链接: www.jenkins.io/doc/develop…
识别损坏的插件可以根据异常的 jenkins 已安装的插件,重新最小化安装新的jenkins,然后也是通过禁用插件来排查的。
JENKINS_HOST=username:password@myhost.com:port
curl -sSL "http://$JENKINS_HOST/pluginManager/api/xml?depth=1&xpath=/*/*/shortName|/*/*/version&wrapper=plugins" | perl -pe 's/.*?<shortName>([\w-]+).*?<version>([^<]+)()(</\w+>)+/\1 \2\n/g'| sed 's/ /:/' | cut -d ':' -f 1 | sort > plugins.txt
wget https://github.com/jenkinsci/plugin-installation-manager-tool/releases/download/2.9.0/jenkins-plugin-manager-2.9.0.jar
wget https://get.jenkins.io/war-stable/2.277.1/jenkins.war
export JENKINS_HOME=~/.jenkins-tables-to-div
java -jar jenkins-plugin-manager-2.9.0.jar -f plugins.txt -d $JENKINS_HOME/plugins --war jenkins.war
java -jar jenkins.war
这里我按照官档提示重新装一个 jenkins ,提示版本很多不满足要求的信息,可能是因为官档例子版本太低 2.277.1,后面我也没换 2.470 版本重试了。
还是决定在原来的 jenkins 禁用插件,官方文档推荐 10 个插件一组,禁用之后需要重启 jenkins,然后去系统配置保存或者应用看有没报错,我这里148个,要分15组。
并不是所有插件都能够禁用,不能禁用的直接跳过。还好到第二轮已经找到了。
官档这里说问题解决后,一次启用一个插件以识别损坏的插件,这就麻了
我这里也是批量开启的,按照名称相似度,比如 build 开头的插件, 在开启 build-name-setter,build-timeout,build-user-vars-plugin,build-with-parameters 插件,重启 Jenkins 后,然后系统配置保存或者应用又出现报错,还是比较幸运的,这么快就碰到,到这时候就需要一个个测试这 4 个插件看哪个有异常。
终于找到问题的插件build-timeout,然后把刚才禁用的插件再打开,重新测试也成功。
最后
Jenkins 插件异常这个问题定位目前没有很好的方法排查,希望 Jenkins 后面这块能做得更好些。