背景

在服务器运行了一个Gitlab用来做自己的代码仓库,用的是简单的Omnibus版本,方便维护,直接sudo apt upgrade就能更新完成。
有一段时间没有更新gitlab以后,最近更新的时候,突然提示类似It is required to upgrade to the latest version first before jumping to the next major version而无法完成更新。

解决

从报错来看,应该是有一个大版本更新了,但是无法从我当前的版本直接升级,所以上Gitlab的官网查了一下,果然是有个点不一样。
我目前使用的是12.9.x,而最新的版本是13.2.0,如果我需要跳到最新版本,需要先更新到最接近的minor版本,比如12.x.y的最后一个minor版本是12.10.x。
然后再跳到第一个13.x.y版,即13.0.0版,最后再升到13.2.0版。

一共要升级3次,因为omnibus一个包就有800M,而且在墙外,下载就比较慢,比较麻烦,不过也没有其他办法。
这里需要注意的是,sudo apt upgrade或者install会默认下载最新的版本,需要使用sudo apt install gitlab-ce=x.y.z-ce.0去指定要安装的版本。
升级完成之后,打开一看,502了

502问题解决

这就尴尬了,在安装中我一直盯着日志看,没有什么报错出现,怎么就突然502了呢。
开始排查问题,首先sudo gitlab-ctl status查看一下各个组件是否都正常启动了,没有问题,各项都是正常启动了的。
没办法,只能硬着头皮看日志了,sudo gitlab-ctl tail会输出每个组件的最新日志,刷新页面重现错误,然而新刷出来日志并没有发现什么。
就这样放在那继续去Google问题,结果还是没有什么发现,由于已经很晚,打算第二天再继续看,切到console一看,居然正好看到一行错误,来自puma,大意是8080端口被占用。

我曾经手动安装过gitlab,但是不记得有个叫puma的东西了,这个可能是最近版本新加的功能,于是本能的去/etc/gitlab/gitlab.rb看是不是有新配置可以用,结果没有找到,去安装目录下的gitlab.rb.template里也没有看到,只能再次去gitlab官网查,果然有更换puma端口的doc,在gitlab.rb里手动添加puma['prot']=xxxx,保存后sudo gitlab-ctl reconfigure再重启一下gitlab,总算回归正常

尝试登陆管理员账号,居然又有新的错误,显示要我去邮箱确认邮件。

无法登陆问题

之前更新从来没有这种,联想到刚刚看日志的时候又尝试往admin#example.com发邮件失败的日志,我以为我那个默认的管理员账号使用了默认的邮箱,那我现在肯定没有办法收到确认邮件呀,于是又去Google了一阵怎么不登录修改邮箱,搜所有配置文件看有没有admin#example.com的地方,结果都不符合。

然后想到能不能登录到发件邮箱去看已发邮件,来获取到确认链接,结果一看,管理员账号的邮箱并不是admin#example.com,而是另一个不常用的邮箱,刚刚那个报错并没有关联。

总结

更新后的2个问题,都是太想当然了,没有仔细分析日志,看到报错就被引入歧途,还是太急躁了