受jenkins版本过低存在漏洞安全问题,计划升级到较高版本,升级过程中遇到一些问题,凭借记忆进行记录下(有可能与实际情况有些出处)。
我的jenkins是通过tomcat启动war包。
1、备份jenkins的配置数据。
找到JENKINS_HOME所在目录,进行备份。
记录tomcat/webapps/下jenkins的用户权限及所属主、所属组。
2、下载需要升级的版本(本次升级为2.222.1)
wget -c https://mirror.gruenehoelle.nl/jenkins/war-stable/2.222.1/jenkins.war
3、升级开始
准备完毕,停止tomcat服务,删掉tomcat/webapps下jenkins及jenkins.war;将2.222.1的war包放到webapps下,设置所属主、所属组,核对权限。
重启tomcat
4、开始排坑
本次升级发现 在部分项目(item)中使用的publish over ssh插件无法正常使用,修改保存会报错为:Refusing to marshal jenkins.plugins.publish_over.BPInstanceConfig for security
看来需要升级下publish over ssh组件
在插件管理中进行publish over ssh组件升级,报错从https://updates.jenkins-ci.org/update-center.json下载插件失败。
根据网上的回答,需要将https改为http
从插件更新日志看,虽然下载成功但有报错为:jenkins does not match expected SHA-256
查询大量网上资料,结合实际报错提示,看来是与中文版有关,需做两部分修改。
1)修改$JENINS_HOME/updates/default.json文件,将其中的www.google.com改为www.baidu.com
2)修改$JENINS_HOME/updates/default.json文件,将其中的https://updates.jenkins.io/download/plugins替换为https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins,改成国内镜像。(此处可能具体的插件地址各有不同,可以根据插件更新日志,修改default.json中对应的插件下载地址,保证从国内镜像下载)
重启tomcat,在插件管理中看到提示:
Publish Over SSH (1.20.1)
Plugin is missing: publish-over (0.21)
Plugin is missing: jsch (0.1.54.2)
Update required: Structs Plugin (1.10) to be updated to 1.14 or higher
于是我先升级Structs插件到1.14,成功下载并升级。
再进行publish over ssh插件的升级,这次成功升级。
5、升级完成
挑选几个项目进行测试无误,本次升级到2.222.1版本成功。