Gitlab 版本升级

一、简介

由于gitlab使用的 13.5.3版本有 CVE-2021-22205 漏洞,需要升级到稳定版本13.8.8

二、升级流程

先查看官网的版本升级路线,13.5.3可以直接升级13.8.8

2.1 备份原gitlab数据

升级前备份原gitlab文件

/etc/gitlab/gitlab.rb 该文件配置了gitlab的域名、邮件发送信息、白名单等相关信息。
/etc/gitlab/gitlab-secrets.json 该文件存储了gitlab的db secret信息。如果丢失,那么使用双重身份验证的GitLab用户将无法访问GitLab服务器,而存储在GitLab中的 安全变量将被丢失。

使用 gitlab-rake 备份gitlab数据,可忽略因为升级过程中会自动进行备份

1
2
3
# gitlab-rake gitlab:backup:create

默认备份文件存储在/var/opt/gitlab/backups,若该目录下不存在,则需要查看/etc/gitlab/gitlab.rb配置中对应的gitlab_rails['backup_path']选项所指定的目录。

2.2 部署新版本的gitlab服务

关闭部分gitlab服务(不要全关,因为升级中可能需要部分服务)

1
2
3
4
5
6
# gitlab-ctl stop unicorn
# gitlab-ctl stop sidekiq
# gitlab-ctl stop nginx

#升级
# yum install -y gitlab-ee-13.8.8

按升级路线版本进行部署,安装源可以使用gitlab官方源

2.3 重启gitlab服务

1
2
3
4
5
刷新配置
# gitlab-ctl reconfigure

重启gitlab服务
# gitlab-ctl restart

如果跨多个大版本需要按版本升级路线中的版本,重复2.2、2.3步骤,升级到目标版本

2.4 设置gitlab定时备份

修改 /etc/gitlab/gitlab.rb 文件

1
2
3
4
# 设置备份存储位置
gitlab_rails['backup_path'] = "/mnt/udisk/gitlab/backups"
# 备份最近七天的数据,即 7*24*60*60 秒
gitlab_rails['backup_keep_time'] = 604800

保存后,刷新配置文件

1
gitlab-ctl reconfigure

编辑定时任务

1
crontab -e

加入以下内容后保存(每天中午 12 点和傍晚 18 点自动执行备份操作)

1
0 12 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create SKIP=uploads,builds,artifacts,lfs,registry,pages

保存后需要重新启动定时器,执行如下语句

1
2
3
4
5
6
7
8
# 重启定时任务
systemctl restart crond.service
# 重装定时任务
systemctl reload crond.service
# 查看定时任务是否开启(可选)
systemctl is-enabled crond.service
# 查看所有用户下的定时任务(可选)
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {}

三、迁移流程

迁移并非是升级gitlab服务的版本,而是将gitlab从一台服务器迁移到另一台服务器的过程,并且要保持迁移前后gitlab的版本一致否则在还原数据的时候会报错。

3.1 备份原gitlab数据

迁移前备份原gitlab文件

/etc/gitlab/gitlab.rb 该文件配置了gitlab的域名、邮件发送信息、白名单等相关信息。
/etc/gitlab/gitlab-secrets.json 该文件存储了gitlab的db secret信息。如果丢失,那么使用双重身份验证的GitLab用户将无法访问GitLab服务器,而存储在GitLab中的 安全变量将被丢失。

使用 gitlab-rake 备份gitlab数据

1
# gitlab-rake gitlab:backup:create

3.2 部署新版本的gitlab服务

安装源可以使用gitlab官方源

3.3 还原gitlab数据

1
2
3
4
5
6
7
8
9
10
还原gitlab数据
# gitlab-rake gitlab:backup:restore BACKUP=1649181808_2022_04_06_13.5.3-ee

将备份的gitlab-secrets.json、gitlab.rb文件拷贝回/etc/gitlab/ 目录下

刷新配置
# gitlab-ctl reconfigure

重启gitlab服务
# gitlab-ctl restart

至此gitlab迁移就已完成,jenkins进行CI/CD的时候可能会出现

1
2
Host key verification failed.
fatal: Could not read from remote repository.

需要手动克隆一下代码,然后在gitlab对应项目的 Settings –> Repository –> Deploy Keys 中允许jenkins服务器,只需要手动克隆一个项目即可。

-------------本文结束感谢您的阅读-------------