首先需要说明的是,jenkins如果没有什么问题,新手最好不要进行升级,不要升级!!!也不要点击升级插件!!!页面的警告完全不用理会!!!(如果是为了使用新插件不得不升级,类似于我这样的需求,那一定要做好备份)
(1)如果你还未发生插件冲突问题但是需要更新插件并重启后才能生效,那么备份你的插件文件夹/plugins,我的默认是放在/root/.jenkins/plugins。如果重启后发生问题只需要还原备份再次重启就行了(这种对于新版之间升级或许可靠,浮动较大的旧版并不可靠,因为我自己是旧版的2.204,升级2.346发现凭据、后端job丢失、job配置里ssh重复,还原后虽然凭据出现了,但是svn不显示了,svn插件不生效了,后端job也不显示了,只剩下前端job,不过也因人而异)
(2)如果已经重启并发生了冲突导致job不显示,一些功能比如凭证什么的都没了。就看我下面的解决思路把
 

我自己遇到的问题是,即使备份还原了,还是有问题,下面说说我具体的踩坑经历和解决办法

一、旧版恢复问题

先说一下我旧版的jenkins出现问题是如何恢复的,旧版是2.204,升级2.346发现凭据、后端job丢失、job配置里ssh重复,还原后虽然凭据出现了,但是svn和ssh都不显示了,插件不生效了,后端job也不显示了,只剩下前端job,因为后台job都是maven项目,重新安装maven插件maven-plugin,从插件里也过滤不到Maven Integration,所以我把备份的目录plugins里面找到maven插件通过页面重新安装了一次 maven-plugin.jpi,安装好以后发现后端job项目都显示了,插件也可以过滤到Maven Integration

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_旧版

 然后又把svn插件subversion.jpi上传安装,svn配置项也出来了(但是svn配置项内容却消失了,不过job的配置文件svn地址是存在的,也挺无语的,我只好手动重新添加一下)

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_jenkins_02

 

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_jenkins_03

二、新版迁移问题

补充知识点

首先要知道,哪些目录和文件是需要用到的(最好是.jenkins目录整个备份,从里面可以挑选)

1. config.xml保存着视图信息,必用(不可以直接覆盖到新版里面,因为里面包含插件版本信息,具体怎么做下面我会细说)

2.jobs 保存着job项目,必用,这个需要直接覆盖到新版本里面

3.*.xml文件,保存的都是插件的数据,比如ssh插件可以增加sshserver信息,内容都会存放到jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml,所以这个文件个别也是需要的,需要结合你实际用了哪些插件,我们用的插件比较少,所以只拷贝了jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml里面的数据(插件文件里也包含版本信息,不可以直接覆盖)

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_jenkins_04

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_旧版_05

 好了,接下来就是我们的迁移了,我们直接下载新版的jenkins war包放进tomcat里面,指定一下jenkins的工作目录

vim  /usr/local/apache-tomcat-8.5.50/bin/catalina.sh

JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"
export JENKINS_HOME="/home/www/.jenkins"

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_xml_06

然后直接启动即可,我们重新初始化一个jenkins工作目录。初始化完成后,将之前备份好的Job目录进行覆盖。再拷贝旧版ssh插件的jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml里面的相关内容到新的ssh插件xml文件中,如下图所示(不可以直接覆盖,因为里面包含插件版本信息等,需要对比差异)

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_旧版_07

拷贝视图信息前要在新版jenkins上新建一个视图,在视图下面创建一个job,这样就知道有什么差异,方便进行拷贝数据修改

 再拷贝旧版备份的config.xml里面的相关配置到新的config.xml文件中,如下图所示(同样不可以直接覆盖,因为里面包含版本信息,引用的class等等,需要对比差异,在这里我也遇到一个坑,就是只能复制两三个view视图内容就需要重启jenkins,一次性弄好重启个别视图会不生效不显示)

 

Jenkins每次重启就半英文半中文 jenkins重启后部分项目丢失_旧版_08

凭据(users目录)不用复制,需要手动创建凭据信息,并且在job里面添加,因为旧版的复制过来也不会生效。 

到此新版jenjkins升级结束!!!