本文主要记录了下Jenkins升级插件过程中出现的场景,一次加班经历,事发时没有截图,有兴趣可以看看。
起因
需求
最近有个需求:在Jenkins流水线中完成下载Git上的文件简单修改并提交的功能
起初找到了相关的插件用法,即使用 SSH Agent Plugin 来完成这个功能
插件不生效
经测试无法完成效果,分别怀疑了以下几点:
- 凭据配置有误
- 写错了脚本
- 当前未安装此插件
- 当前插件版本过低
- 当前插件由于某种原因未生效
排查不生效原因
经排查,发现的确没有生效,原因是之前运维同事做迁移时做的一系列骚操作搞的:
- 用最新的Jenkins war包部署 + 老版本Jenkins家目录
- 由于新版本需要使用新版本的插件才能生效,升级了所有插件
- 升级完重启,启动不起来了……
- 回退老版本war包,继续使用当前升级过插件的Jenkins家目录
- 在插件管理处,按提示降级了部分插件
预感
等我看到 Manage Jenkins 那一片红的时候,就有预感这次要不简单,当时也没多想,去检查了下 SSH Agent Plugin 的版本
升级插件
发现提示Warn 需要升级此插件到某版本及以后,插件方能生效,没多想,升级就是了
没想此举为我昨晚的加班,打开了潘多拉魔盒…… 升级完重启,启动不起来了!
Jenkins挂机
启动报错如下:(昨晚没心情截图,直接搜的错误)
com.thoughtworks.xstream.mapper.CannotResolveClassException: com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategyat com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:79)atcom.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java