记一次Gitlab升级过程

现在公司使用gitlab作为版本管理工具,由于安装时间早,停留在了6.3.1 bitnami版本,ssh协议貌似是废的,只能走http。虽然说日常拉取和提交代码都没什么问题,但是近期出现了不稳定的现象,频繁报500错误,所以下决心把它升级,顺便可以解决自动构建的问题,然后丢到docker里运行。

gitlab升级没什么难度,就是繁琐,经历了以下版本的历程:

  • 6.3.1
  • 7.14
  • 8.0 → 8.16

大版本是直接从6.x到7.14,然后7.14到8.0,8.0之后是不断升级,不敢贸然跨版本进行,按部就班,1天3夜终于完成了升级,目前升到了8.16-ce的最新版。

升级请严格按照按照官方的升级指南来进行,每次升级前都要进行备份,防止出问题;然后升级无非就是先拉取代码,然后checkout切换版本,升级gitlab-shell之类的,还有ruby和git的版本,如果提到请务必升级,每个版本升级完成后,最好按照提示来进行检查。

先说一下升级过程中遇到的问题:

1) 6.x到7.14的时候,包的依赖问题

当你执行这条命令时

sudo -u git -H bundle install --deployment --without development test postgres aws  

如出现此类错误 Could not find modernizr-2.6.2 in any of the sources,则修改:

vim Gemfile  

gem "modernizr", "2.6.2" 修改为 gem "modernizr-rails", "2.7.1"

vim Gemfile.lock  

modernizr (2.6.2) 修改为 modernizr-rails (2.7.1)

modernizr (= 2.6.2) 修改为 modernizr-rails (= 2.7.1)

再次运行:

sudo -u git -H bundle install --deployment --without development test postgres aws  

2) nginx配置文件不断的更新

这个坑一开始没注意,后来一直500了才注意到,所以每次都需要按照gitlab的说明对比下配置文件的不同之处,要及时更新nginx的配置。

3) ruby源的问题

上边第一点在安装所需依赖的时候,会出现下载缓慢的情况,可以修改ruby的源为 https://ruby.taobao.com Gemfike和Gemfile.lock的都需要改。

4) 数据库转换

在升级到8.16之后,还需要进行数据库转换,MySQL→Postgres,官方推荐的脚本留下了坑,转换脚本有问题。自行修改之后,成功转换,然后在docker版里恢复成功,顺利运行。

脚本我已经更新在我的Github上:https://github.com/Yiipanny/mysql-postgresql-converter

最近的文章

Docker下MySQL迁移问题

因为ext4文件系统的 “百分百占用io” bug,严重影响了系统的稳定,索性一丅

mysql, docker继续阅读
更早的文章

记一道简单的面试题

直接上题: #!/bin/sh #有一个监控程序,会自动生成每一分钟的监控,并切割放入文件夹中, #比如2016-05-17 17:16:00 的视频文件文件名为201605171715.mp4, #…

shell继续阅读