公司内部的 SDK 版本是通过 GItlab 进行版本管理,而在 SDK 中存在着大量的二进制文件,在进行多次版本发布之后,
.git
文件越来越大,pull 新版本的时间也越来越长。
背景
Git LFS 工具可以很好的解决这个问题,通过将二进制文件直接上传的方式,git 只需要保存字符链接,关于 git LFS 的原理可以看这里:
那么问题来了,由于 gitlab 的开始对 LFS 的版本高于目前公司使用的版本,所以我们需要给 gitlab 进行升级。
思路
之前的 gitlab 的部署是通过 bitnami 的 VM 部署到 host 机器上的,想转到用 docker 来进行部署。
首先我预想的方式是,将之前的 bitnami VM 的备份导入到 dockerhub 对应版本的镜像,在 Restore 之后换成更高版本的 gitlab image。不过很遗憾,这个方法失败了,gitlab 的升级需要递进的升级,在这里给出官方推荐的升级路线:
pic
那么换一种思路,先把之前的备份先恢复到对应的 gitlab image 上,在容器内部进行升级,之后再做一个备份,迁移到更高版本的 gitlab image。结论是,这个方法是可行的。
踩坑
- 前期准备:
- gitlab 8.5.1 备份
- Linux server with docker
了解关于与备份恢复相关的一些命令:
1 | # 查看 gitlab 版本 |
创建备份后得到一个文件 1572508219_2019_10_31_11.3.4_gitlab_backup.tar
根据查看的 gitlab 版本为 8.5.1
docker pull gitlab/gitlab-ce:8.5.1-ce.0
运行:
1 |
|
关于--volume /srv/gitlab/logs/reconfigure:/var/log/gitlab/reconfigure \
:
如果去掉会有如下错误
![image-20191101120624086](/Users/Xiaoy/Library/Application Support/typora-user-images/image-20191101120624086.png)
docker exec -ti gitlab /bin/bash
进入容器,
首先进行恢复
1 | sudo gitlab-ctl stop unicorn |
如果在恢复前对 gitlab 进行过设置,恢复时候将会覆盖掉,所以最好是在一个干净的 server 上进行恢复
恢复后按照官方推荐的方式逐个版本升级
GitLab Release and Maintenance Policy
升级过程:
Tips:由于某ZZ的墙的原因,使用Gitlab的官方apt源会出现下载不了,可以选择清华的镜像,你也可以使用apt-mirror来自建本地的apt源(https://packages.gitlab.com/gitlab/gitlab-ce/mirror
)但是版本可能会跟不上官方的更新。
-
先进行数据的备份,这一步可以省略,因为gitlab在升级的时候会自动为你备份
gitlab-rake gitlab :backup :create RAILS_ENV=production
-
下载官方的提供的apt源自动更新脚本
我的是ubuntu系统,所以选择的是apt源官方的package list 地址:
手动更新apt源,最终我采用的是官方提供的这个文档:https://packages.gitlab.com/gitlab/gitlab-ce/install#manual
-
refreshing package cache :
sudo apt-get update
-
Ensure the required tools are installed before proceeding
sudo apt-get install curl gnupg apt-transport-https
-
install GPG Key:
curl -L https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey | sudo apt-key add –
-
create apt file: /etc/apt/sources.list.d/gitlab_gitlab_ce.list ,please include repository configuration below :
如果是ubuntu 系统如下:1
2deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ trusty main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ trusty main如果是别的Linux Distribution and version ,参考如下的文档:
https://packagecloud.io/docs#os_distro_version
-
sudo apt-get update
-
apt源配置完毕,下面可是执行上面的安装命令:
先升级到9.5.0
sudo apt-get install gitlab-ce=9.5.1-ce.0
完毕后没有问题,要重启gitlab-ctl restart
升级到10.8.7
sudo apt-get install gitlab-ce=10.8.7-ce.0
没有问题,重启sudo gitlab-ctl restart
升级到最新版:
sudo apt-get install gitlab-ce
最后一部,如果没有大的版本发布,直接执行install 就行
没有问题,重启sudo gitlab-ctl restart
-
至此,gitlab的升级完成
在升级好的 gitlab 上进行备份
gitlab-rake gitlab:backup:create
再次迁移,即可