gitlab-ee版本升级
概述
最近公司有台部署于2021年gitlab(gitlab-ee-13.11.7)经常被恶意攻击,结合CVE等信息,除了升级防护以外,对gitlab服务本身也需要升级一下,降低重大漏洞对数据安全的影响,体验和使用新功能。本文对gitlab升级过程进行记录。同时,希望对有gitlab升级需求的小伙伴们有所帮助。
环境说明
| 环境名称 | 版本 | 备注 |
|---|---|---|
| 操作系统 | CentOS 8.5 | 已经停止支持,仓库源多数不能适用 |
| gitlab版本 | gitlab-ee 13.11.7 | 于2021年当时最新版 |
注意受不同版本影响,部分依赖包版本需要针对性升级,另外可能需要补充相关依赖。
升级说明
资料参考官方资料https://docs.gitlab.com/update/。
Gitlab版本号采用x.y.z格式命名。其中x表示主版本数字,代表年编码(17代表2025、18代表2026以依次类推);y表示次版本号,代表月份编码,用数字1-12表示;z表示补丁号,用数字1,2,3等表示。
版本升级说明
- Gitlab升级必须安装官方指定的版本依次升级,即官网描述的
升级路径,可以通过升级路径工具查询必须要升级站(版本),在升级步骤会进行详细说明。 - 有数据的升级,每站升级前需确保功能正常并进行完整备份,利用备份和对应的版本安装程序能够在很快完整数据恢复。
- 站(版本),通常需要进行数据的schema升级、版本升级、依赖升级,所以不能跳过。
1、查询升级路径
安装Gitlab官方文档,Gitlab升级需要遵循升级路径(即特定版本)依次升级。在官网目前仅提供Gitlab 16、Gitlab 17、Gitlab 18版本的升级路径。对于更早版本,我们可以通过https://gitlab-com.gitlab.io/support/toolbox/upgrade-path来查询从当前版本升级至目标版本的路径。

操作步骤:
- 选择当前版本号(如果列表中无当前版本,需要向下选择小的版本号)
- 选择目标版本
- 选择版本/Edition 本例适用Enterprise版本,二者处适用包不一样,其他无明显区别。
- 选择OS类型
- 其他选项,仅供参考
- 选择Go!
系统将展示需要经过的站(关键版本)
在结果页中可以看到必须的版本站(stop)以及对依赖、操作系统、数据库系统的的要求,处升级操作系统以外,其他依赖升级和数据升级均相对安全,可以放心升级。
2、获取安装包
安装升级包全部在Gitlab官网获取,站点地址https://packages.gitlab.com/gitlab/gitlab-ee。
由于某些原因,目前所有yum/dnf源不能完全提供完整的升级路径站所需的全部版本,需要按照以下方式手动获取。
以13.12.15版本站(stop)为例说明获取安装包。
2.1 安装包选择

版本检索说明
- 在1处搜索去输入版本号,本例
13.11.15,回车后出现Package Type选择框。 - 在2处选择安装安装包类型
- 在3处输入linux约定的发行版本表示,本说明centos8.5,输入el/8,其他发行版本依次类推。
- 在3处回车,根据架构在4处点击包名称。
2.2 版本下载
通过点击上述的包名称,进入包详情页。

在次详情页中,翻找wget区域,点击即完成wget下载的复制。
# 以13.12.15示例
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-13.12.15-ee.0.el8.x86_64.rpm/download.rpm
需要按照升级路径中所有版本全部下载备用,不可缺少,否则升级将无法完成。
3、升级执行
3.1 Gitlab备份
建议
备份过程可以通过防火墙或者其他策略禁止其他用户访问,以保证所有Gitlab所有组件不停止服务,能够保证备份的完整。在操作过程中发现所谓非必须服务依然可能备份不完整。
Gitlab备份命令
gitlab-rake gitlab:backup:create
主要控制台的提示信息,Gitlab的管理程序/脚本具备良好的信息提示支持,不要漏过关键信息。
通常,备份结果放置在目录
/var/opt/gitlab/backups
备份完成后需要将备份和/etc/gitlab中的所有文件一起备份其他存储设备。在实际操作中,笔者每次将上述数据文件备份至nas中。
3.2 升级执行
基于centos,通过RPM命令进行安装。
安装命令
rpm -Uvh filename.rpm
安装说明
- 执行过程中,建议不要长时间离开,注意控制台提示信息。Gitlab提供了良好的信息提示,例如升级失败的原因和补救措施。建议,有异常情况将错误信息复制、保存到文档中备用。
- 由于版本升级,依赖包、数据库、操作系统(通常不需要)需要安装或者升级,根据提示进行操作即可。
- 部分版本需要修改配置,根据实际情况检索解决方案,通常比较简单处理和Gitlab会提供修复脚本,注意控制台提示信息。
3.3 升级完成
升级完成后,部分版本需要手动重启Gitlab服务,为了避免以外,建议安装完成后全部重新Gitlab服务。
gitlab-ctl restart
4、升级实操
本文仅记录了13.11.7升级至16.11.10部分,后续版本升级过程已经同事执行。如果需要补充或者值得借鉴的内容再补充。
文本记录了笔者在升级过程中遇到的问题。
下载安装包
13.11.7至16.11.10部分
# 13
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-13.12.15-ee.0.el8.x86_64.rpm/download.rpm
# 14
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-14.0.12-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-14.3.6-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-14.9.5-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-14.10.5-ee.0.el8.x86_64.rpm/download.rpm
# 15
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-15.0.5-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-15.1.6-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-15.4.6-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-15.11.13-ee.0.el8.x86_64.rpm/download.rpm
# 16
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-16.3.9-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-16.7.10-ee.0.el8.x86_64.rpm/download.rpm
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ee/packages/el/8/gitlab-ee-16.11.10-ee.0.el8.x86_64.rpm/download.rpm
13.y.z升级
无特殊说明,不重复。
备份!
升级
rpm -Uvh gitlab-ee-13.12.15-ee.0.el8.x86_64.rpm
13.y.z升级过程无特殊情况,确认数据完整性和功能可用性。
14.y.z升级
无特殊说明,不重复。
备份!
升级
按照路径依次执行。
rpm -Uvh filename.rpm
14.y.z升级过程存在数据库schema的较大升级,升级过程较慢,且可能存在升级失败,但是提示信息很好升级。
确认数据完整性和功能可用性。
15.y.z升级
如果配置了邮件服务,升级15.11.13更新前需要按照要求调整配置或者临时关闭邮件功能,待升级完整后按照最新版本邮件配置重新配置。
修改/etc/gitlab/gitlab.rb后,记得重新配置
gitlab-ctl reconfigure
备份!
升级
按照路径依次执行。
rpm -Uvh filename.rpm
15.y.z无特殊情况,确认数据完整性和功能可用性。
16.y.z升级
备份!
升级
升级16.3.9版本需要升级PostgreSQL13。
升级命令
sudo gitlab-ctl pg-upgrade -V 13
升级成功后,注意保存控制台提示。即,恢复数据库服务或者功能正常后清理脚本。
==== Upgrade has completed ====
Please verify everything is working and run the following if so
sudo rm -rf /var/opt/gitlab/postgresql/data.12
sudo rm -f /var/opt/gitlab/postgresql-version.old
事实上,在16.7.10和16.11.10安装升级中,需要再次升级PostgreSQL,但幸运地是不需要我们手动处理了,以下为控制台数据库升级的处理脚本。
==== Upgrade has completed ====
Please verify everything is working and run the following if so
sudo rm -rf /var/opt/gitlab/postgresql/data.13
sudo rm -f /var/opt/gitlab/postgresql-version.old
5、小结
至此,已经完成了13.11.7至16.11.10部分升级,经过确认功能一切正常。后续,有其他同事完成后续升级,有时间、有必要继续补充。
更多推荐



所有评论(0)