问题是这样的 我从 Jenkins2.324 升级到 2.335,在界面上点了自动升级,重启的时候报错,报错信息节选如下

org.jenkinsci.plugins.oic.OicSecurityRealm
Caused: jenkins.util.xstream.CriticalXStreamException: 
Caused: java.io.IOException: Unable to read /root/.jenkins/config.xml

出现问题后搜索到了参考文章1,里面提了一个方法:将<authorizationStrategy></authorizationStrategy> 标签整个删去,将<useSecurity></useSecurity>标签也删去。

实际上我是这样做的:

1. 备份原来的config.xml

docker cp jenkin_docker:/var/jenkins_home/config.xml .

2. 修改 config.xml

docker exec -ti jenkin_docker /bin/bash
vim config.xml
  • 将 标签整个删去
  • true 修改为 false

3. 重启jenkins

  • 网页重启:访问下面的网址
    http://jenkins.yeshen.org/restart

  • docker重启

docker restart jenkin_docker

我弄的时候是直接重启docker,但是发现触发了账号密码验证,authorizationStrategy是走的oauth登陆的,去掉了我自己也无法登陆。

解决方法是:

docker exec -ti jenkin_docker /bin/bash
vim config.xml
# - <useSecurity>true</useSecurity> 修改为 <useSecurity>false</useSecurity>
# - 网页重启:http://jenkins.yeshen.org/restart

4. 撤销升级

  • 访问: http://jenkins.yeshen.org/manage ,界面上有个撤销升级,点一下,会自动降级、重启
  • 重启后,发现jenkins报错,显示少了 Mailer Plugin,安装一下这个插件(这个有点关键,不做的话,下一个步骤会再报最初的错误)
  • 恢复config.xml
docker cp config.xml jenkin_docker:/var/jenkins_home/config.xml
  • 重启jenkins(见第三小节)

5. jenkins备份

  • http://jenkins.yeshen.org/pluginManager/available 搜索 ThinBackup ,安装
  • 设置备份目录:

http://jenkins.yeshen.org/thinBackup/backupsettings
Backup directory : /home/backup
保存

  • 新建备份目录
docker exec -ti jenkin_docker /bin/bash
cd /home
mkdir backup
  • 开始备份

http://jenkins.yeshen.orgthinBackup/
http://jenkins.yeshen.orgthinBackup/backupManual

PS: http://jenkins.yeshen.org 只是一个示例,如果你出现问题,请修改为你的jenkins地址。

我是晚上回家趁没人使用升级的,结果升出问题,恢复搞了两个多小时,如果你也要升级,建议挑没人使用的时间点去处理…

参考文章:

  1. https://www.jianshu.com/p/3ce22b527a7f
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐