版本升级:2.260-2.293

问题背景:
我们的jenkins架构是主节点通过docker-compose启动的,在一台华为云的ecs(1c2g)上。从节点有一台,也是一台ecs(2c8g)。因为配置都不高,从节点并发数设置的5,在jenkins ui上配置了尽量在slave上打包,主节点设置只有匹配label的job才可在主节点打包。我们公司主要用的是多分支流水线,通过jenkins共享库自动触发发版。但是在打包安卓项目的时候发现,机器内存不够用了,安卓打包真的费内存啊!因此决定解决这个问题,但是为了节省运维成本没有直接买ecs的方式来增加从节点。通过查阅官方文档,发现可以将从节点直接对接到k8s中,我们公司刚好用的华为云的k8s集群。于是就决定试一试这个方案。但是2.260版本的jenkins不支持kubernetes插件,需要至少升级到2.263才可,这是我的第一个坑。没有选择最合适的版本,我直接就选择了最新版本2.293.。。。 还是太年轻了,直接垮了几十个版本升级,建议不要这么搞,风险太大,而且我的jenkins也没有打镜像备份,导致升级后发现有的功能不能用了,在打包的过程中报错了,升级过程我就不说了,很简单就是到https://updates.jenkins.io/download/war/ 这里把需要的war包下载下来,重启就ok了。第一次升级报错如下:
在这里插入图片描述
意思是TokenMacro这个插件不ok,需要选择合适的插件,但是当时还没分析出来,发现不能用,赶紧回滚了,到晚上没人用的时候我又升级了这个插件发现ok了,当时很开心。不过这才是开始,马上迎来了第二个坑。
过了两天由于项目需求,需要新建项目,这时候发现新建项目居然保存不了了。。点了没有post请求那种,当时感觉应该是插件问题,但是当时我不知道怎么看日志,到服务器上看日志,日志飞速的刷根本找不到我想要的。我的天,这咋弄。。。搞了十几分钟也没搞好,没办法,只能再回退版本了。新建了项目算是没有问题了,但是第三个坑又来了。
新建项目以后,这第三个坑就如约而至,发现没有办法发版了,点发版没反应,卧槽。感觉刀架到了脖子上,心想这升级太草率了。但是现在我还没办法定位问题,只知道自己升级了插件,但是也不知道之前是哪个版本了,难受,做操作之前一定要记录。顿时心生一计,是不是升级上去就可以发版了,赶紧再次升级。升级到2.293后终于可以发版了,解决了临时的问题,但是这个不能保存的问题依然在。
晚上没人用的时候,我决定要解决这个问题,这里告诉大家,虽然我的操作流程有问题,但是问题既然已经发生了,就不要怕,想办法解决,因为这不是什么世界难题,一定有办法解决的,事在人为。解决了履历上也会有新的一笔,没解决会自我否认的,废话不多说继续搞。我想既然是插件问题,那么我把插件更新了是不是就好了呢?在此提醒大家,如果一个操作结果不确定一定要记得备份,即便确定也要备份不要怕麻烦,最好直接打个快照这样,这是运维人员的基本职业规范,我还是有点懒了。。如你所想,没有备份,直接升级。。哈哈哈 结果可想而知,本来一个插件的问题,被我整成了不知道哪个插件,更不知道哪个版本了。完蛋,还好升级后还是有一点点进展,至少可以提交post请求了 会展示一个错误log id,这样我可以到日志里查看错误。
在这里插入图片描述
根据这个我找到了日志
在这里插入图片描述
当时觉得应该就是gitlab-branch-source这个插件的问题,确实最终也是这个插件的问题。但是当时我不清楚到底是哪个版本以及怎么去更换插件,只能通过jenkins ui去变更插件,整了一晚上都没整明白,一晚上没有做出任何结果,难受啊。。。
第二天来公司继续整,研发同事说发现打了tag,jenkins没有自动扫描这个tag,还需要手动点扫描,又是一个坑。没办法又处理这个问题,而且jenkins变得很慢,我想应该是配置的原因,也是因为插件不兼容导致cpu太高了。这个问题好几天了,不能再拖了,今天必须得解决了。但是jenkins卡的要死,这是当务之急。做了各种操作也没有,后来重启直接起不来了。。。完蛋 。最后只好升级配置,发现一下子变得贼快也不卡了,事实告诉我们,有的时候解决不了可能升一下配置会管用的。但是不能保存的问题还是没有解决。
又是晚上,我先更换jenkins各种版本,发现这不是版本固有问题,因此可以百分百确定是插件问题,但是我不能总在这台master上搞。好不容易现在能用的状态如果搞坏了就完了。有了之前的教训,这次我赶紧打了个镜像,真香,也很快就5分钟左右就好了,然后就是在这台镜像上一顿操作,发现插件gitlab-branch-source回退到1.4.6版本就不在有这个问题了,终于解决了。开心!

结语:

这次的问题产生的原因我太自以为是了,没有规范操作。正确操作应该是先打好整机镜像,在做每一次变更之前都有指定好回滚策略,这样就不会慌。并且不能跨太多版本,能用的版本就可以了,问题应该不会这么多,最后想说遇到问题不要怕,相信自己细心分析一定能解决的。希望可以帮助到有同样问题的朋友。

Logo

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

更多推荐