升级Jenkins从2.263.3到2.440.2

升级Jenkins从2.263.3到2.440.2

###任何一次升级前,先做整体备份,同时最好对plugins目录和config.xml单独备份。
###对于任何一次插件安装,务必安装前先备份当前的plugins目录,这是血的教训。

升级过程

1、 升级2.263.3到2.263.4:

这个过程主要解决role-strategy 插件的兼容性问题;
你会遇到问题:
SEVERE jenkins.model.Jenkins#save: An attempt to save Jenkins’’ global configuration before it has been loaded has been made during milestone Configuration for all jobs updated. This is indicative of a bug in the caller and may lead to full or partial loss of configuration. java.lang.IllegalStateException: call trace at jenkins.model.Jenkins.save(Jenkins.java:3356) at jenkins.model.Jenkins.saveQuietly(Jenkins.java:3384) at jenkins.model.Jenkins.setSecurityRealm(Jenkins.java:2636) at jenkins.model.Jenkins 16. r u n ( J e n k i n s . j a v a : 3328 ) a t o r g . j v n e t . h u d s o n . r e a c t o r . T a s k G r a p h B u i l d e r 16.run(Jenkins.java:3328) at org.jvnet.hudson.reactor.TaskGraphBuilder 16.run(Jenkins.java:3328)atorg.jvnet.hudson.reactor.TaskGraphBuilderTaskImpl.run(TaskGraphBuilder.java:169) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296) at jenkins.model.Jenkins$5.runTask(Jenkins.java:1128) at org.jvnet.hudson.reactor.Reactor 2. r u n ( R e a c t o r . j a v a : 214 ) a t o r g . j v n e t . h u d s o n . r e a c t o r . R e a c t o r 2.run(Reactor.java:214) at org.jvnet.hudson.reactor.Reactor 2.run(Reactor.java:214)atorg.jvnet.hudson.reactor.ReactorNode.run(Reactor.java:117) at jenkins.security.ImpersonatingExecutorService 1. r u n ( I m p e r s o n a t i n g E x e c u t o r S e r v i c e . j a v a : 68 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r ( T h r e a d P o o l E x e c u t o r . j a v a : 1149 ) a t j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r 1.run(ImpersonatingExecutorService.java:68) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor 1.run(ImpersonatingExecutorService.java:68)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748)

解决方法:
Update to https://github.com/jenkinsci/role-strategy-plugin/releases/tag/role-strategy-3.1 and you should be OK.

2、升级2.263.4到2.426.3:

首先,需要升级JDK8到JDK17;
其次,跨了这么多版本,主要是因为plugins,如果不直接一步到位最新的LTS版本,需要一个个的去验证出问题的各个plugin,工作量太大了。
升级到最新的LTS版本,可以一键使用最新的plugins,然后再通过控制台启动日志,找到不兼容的部分插件,然后逐个去适配。
plugins地址为:https://plugins.jenkins.io/ui/search/
因为即便升级到了最新的LTS版本,仍然有部分插件不适配,就需要到plugins库中找到相应的版本才可以。
再次,如果jenkins配置了slave,所有的slave机器都需要安装JDK17,并删除remoting.jar,然后重新建立连接。
最后,最大的问题在于,如果java代码仍然使用JDK8,如果job中是使用maven插件来编译项目,则这些job将不可用,原因在于jenkins服务使用了最新的JDK17来启动,插件也都应该是JDK17的,所以只能将maven插件job换成freestyle的项目,使用shell命令行来构建java项目。
同理,对于与JDK 版本相关的插件,都存在类似的不兼容问题,比如fortify。

3、升级2.426.3到2.440.2.

这个基本直接升级就可以了。

4、升级2.440.2到2.440.3

这里又涉及了gradle的兼容问题,如果项目代码使用早期版本的gradle,未升级gradle,则原来gradle插件配置将不可用。

升级总结

Jenkins升级,有几个问题要注意:
1、升级版本问题:
要考虑项目实际使用的JDK版本,如果你也是JDK8的项目,升级到最新的LTS版本,就会面临我提到的上面的问题。

不升级到最新版本,就会面临所有不兼容插件的适配问题,比如升级到指定版本,通过控制台启动日志 ,找到不兼容插件,然后逐个找到适合当前版本,每个插件可能需要适配很多次。
2、备份:
jenkins最重要的就是插件,插件更新和升级前,务必做好备份。

相关推荐

  1. 升级Jenkins2.263.32.440.2

    2024-06-05 19:56:05       39 阅读
  2. PostgreSQL 15 升级 16

    2024-06-05 19:56:05       31 阅读
  3. 在Docker中运行Jenkins容器:入门实践

    2024-06-05 19:56:05       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-05 19:56:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-05 19:56:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-05 19:56:05       82 阅读
  4. Python语言-面向对象

    2024-06-05 19:56:05       91 阅读

热门阅读

  1. 贪心算法和动态规划算法选择依据

    2024-06-05 19:56:05       29 阅读
  2. TypeScript的简单总结

    2024-06-05 19:56:05       26 阅读
  3. iOS ActivityViewController使用

    2024-06-05 19:56:05       34 阅读
  4. docker安装minio及minio的使用

    2024-06-05 19:56:05       33 阅读
  5. axios学习

    2024-06-05 19:56:05       28 阅读
  6. 什么是封装?为什么是要封装?

    2024-06-05 19:56:05       27 阅读
  7. Python 变量相除:深入探索与实战解析

    2024-06-05 19:56:05       28 阅读
  8. 如何把docker里的内容拷贝出来

    2024-06-05 19:56:05       29 阅读
  9. Python开发入门:从基础到实践的全方位探索

    2024-06-05 19:56:05       25 阅读