Bootstrap

GitLab常规版本升级指引

背景:gitlab经常因为存在组件漏洞需要及时升级版本到最新版,也算升级比较频繁的了,然后升级过程还相对比较麻烦,故闲来写一篇升级流程指引

注意事项:升级指引中的文件路径都是本人机子默认的安装路径,不同机子的安装路径可能不是完全相同的,需要读者自己灵活变通换成自己的gitlab安装路径

一、升级前注意事项

1.查看当前版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

2.查看镜像库最新版本

Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

3.查看官方升级路径

Upgrading GitLab | GitLab

4.进行数据备份(必须要做,防止升级失败需要回滚到当前版本)

gitlab-rake gitlab:backup:create(数据备份默认目录/var/opt/gitlab/backups/)

5.进行配置文件备份(重要,回滚需要用到)

进入配置文件目录/etc/gitlab备份以下两个文件:

gitlab.rb

gitlab-secrets.json

6.检查后台迁移是否已经全部完成(每次升级前都需要检查,否则可能会升级后加载配置文件失败)

root用户下进入gitlab自带数据库

gitlab-psql

执行检查时候还有后台迁移状态的sql

select job_class_name, table_name, column_name, job_arguments from batched_background_migrations where status <> 3;

若查询数据为空则无需 理会,若不为空则手动迁移数据

gitlab-rake gitlab:background_migrations:finalize[PopulateOperationVisibilityPermissionsFromOperations,project_features,id,'[]']

注意将上述语句中方括号中的内容替换为表中字段对应的值:

例如:

再次执行检查sql,查看是否已经完成迁移,迁移全部 完成后可进行下一步升级(按照官方升级路径来)

二、升级过程

1.停机更新,并启动自带数据库组件

gitlab-ctl stop

gitlab-ctl start postgresql

2.升级对应版本

yum install -y gitlab-ce-15.4.0

3.若2中语句无法识别则需要配置repo源

新建repo源文件

vim /etc/yum.repos.d/gitlab-ce.repo

文件内容为:

[gitlab-ce]
name=gitlab-ce
baseurl=Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
repo_gpgcheck=0
gpgcheck=0
enable=1
gpgkey=https://packages.gitlab.com/gpg.key
4.升级完成后先检查数据迁移是否完成再重新加载配置

gitlab-ctl reconfigure

5.重新启动

gitlab-ctl restart

需等待大概2-3分钟才能打开页面

三、失败回滚

1.删除当前失败的版本(回滚前将备份文件移动自己的非gitlab默认目录中暂存,否则可能会出现备份文件一起被删除的情况

sudo gitlab-ctl stop
sudo gitlab-ctl uninstall
sudo yum remove gitlab-ce
sudo gitlab-ctl cleanse #保留数据不执行该命令
sudo rm -rf /opt/gitlab #保留数据不执行该命令

2.按照二中升级流程重新安装需要回滚的版本

3.数据和配置文件备份恢复

配置文件恢复:

将之前备份的两个配置文件放回/etc/gitlab目录即可

数据恢复:

将备份数据移动到默认备份目录:/var/opt/gitlab/backups

执行数据恢复命令,例如:

gitlab-backup restore force=yes BACKUP=1658396744_2022_07_21_14.10.5

4.重新加载配置文件,并重启

gitlab-ctl reconfigure

gitlab-ctl start

四、升级过程中异常处理

升级过程中可能会出现一些gitlab所自带的中间件版本不兼容的情况,一般是版本过低(具体原因具体分析,可以通过看启动时的日志找出报错原因),需要单独升级对应的组件

比如,升级PostgreSQL

sudo gitlab-ctl pg-upgrade
 

升级过程中,有时候比较多细节需要注意,一般直接看网上的攻略解决即可:Gitlab升级PGSQL12 - 简书gitlab的版本是老的,之前用的pg版本为11.x。后来升级到13.9.4了,没有执行升级pg的操作,但是从13.3开始提供了PG12的包,并从13.7开始默认安装PG12...https://www.jianshu.com/p/71b08a45b89f

其他组件的升级也类似处理

 

;