当前位置: 首页 > news >正文

Jenkins更新版本和插件导致maven工程job丢失(不显示)或部分功能丧失(svn,ssh)

首先需要说明的是,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

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

 

二、新版迁移问题

补充知识点

首先要知道,哪些目录和文件是需要用到的(最好是.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 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工作目录。初始化完成后,将之前备份好的Job目录进行覆盖。再拷贝旧版ssh插件的jenkins.plugins.publish_over_ssh.BapSshPublisherPlugin.xml里面的相关内容到新的ssh插件xml文件中,如下图所示(不可以直接覆盖,因为里面包含插件版本信息等,需要对比差异)

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

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

 ​​​​​​

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

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

相关文章:

  • 计算机网络——传输层の选择题整理
  • 多级缓存的原理和实现
  • hadoop学习使用
  • 【WSL2】CENTOS7 安装与配置
  • Python调用OpenCV接口播放本地视频文件、本地和网络摄像头
  • 推进智慧工地建设,智慧工地是什么?建筑工地人必看!
  • 进阶笔录-深入理解Java线程之Synchronized
  • Python性能测试工具汇总
  • java基础之浅聊阻塞队列BlockingQueue
  • 单分散亚微米聚苯乙烯—聚乙酸乙烯酯(P(St-VAc))聚合物微球/聚苯乙烯塑料微球聚乙烯醇相关知识
  • frp记录
  • 阿里巴巴按关键字搜索商品 API 返回值说明
  • 天花板级别的python读取文件方法,真的香.......
  • Hadoop伪分布式搭建
  • 【Java】博图S7通讯仿真测试上位机连接
  • 【译】JS基础算法脚本:字符串结尾
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CSS相对定位
  • C学习-枚举(九)
  • docker python 配置
  • Github访问慢解决办法
  • Java比较器对数组,集合排序
  • Java面向对象及其三大特征
  • Laravel 中的一个后期静态绑定
  • LeetCode算法系列_0891_子序列宽度之和
  • Magento 1.x 中文订单打印乱码
  • 包装类对象
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 深度学习在携程攻略社区的应用
  • 算法-图和图算法
  • 用Canvas画一棵二叉树
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • # Maven错误Error executing Maven
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #pragma once
  • (a /b)*c的值
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (十三)Maven插件解析运行机制
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)Windows2003安全设置/维护
  • (转)关于pipe()的详细解析
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***详解账号泄露:全球约1亿用户已泄露
  • .“空心村”成因分析及解决对策122344
  • .CSS-hover 的解释
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .Net - 类的介绍
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET CLR基本术语
  • .Net FrameWork总结
  • .NET 表达式计算:Expression Evaluator