Ubuntu中GitLab版本升级指南(Omnibus安装为例)
备份所有关键数据
升级前必须通过GitLab自带工具创建完整备份,涵盖数据库、项目仓库、配置文件等。执行命令:
sudo gitlab-rake gitlab:backup:create
备份文件默认存储在/var/opt/gitlab/backups目录,需确认备份完整性(如检查文件大小、生成时间)。
确认当前GitLab版本
通过以下命令查看当前安装的GitLab版本(包括主版本、次版本、修订号):
sudo gitlab-rake gitlab:env:info
或登录GitLab Web界面,点击右上角头像→「Help」→「About GitLab」查看。
查阅官方升级文档
访问GitLab官方升级指南(如CE版升级说明),明确当前版本到目标版本的升级路径(例如从14.0.x升级到17.x,需依次经过14.0.x→14.3.x→14.9.x→15.0.x等中间版本),避免跨大版本直接升级导致兼容性问题。
检查系统环境
sudo apt update && sudo apt upgrade -y && sudo reboot
sudo apt list --upgradable查看可更新的依赖。若尚未添加GitLab官方仓库,执行以下命令添加(以CE版为例):
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
若已添加仓库,可直接执行sudo apt update更新仓库索引。
运行以下命令升级GitLab到最新可用版本:
sudo apt update
sudo apt upgrade gitlab-ce
若需升级到特定版本(如17.6.1-ce.0),可指定版本号:
sudo apt install gitlab-ce=17.6.1-ce.0
系统会自动下载并安装新版本,期间可能会提示确认依赖项安装,输入Y继续。
升级完成后,执行reconfigure命令应用新配置:
sudo gitlab-ctl reconfigure
该命令会根据/etc/gitlab/gitlab.rb配置文件重新生成服务配置,随后重启GitLab相关服务:
sudo gitlab-ctl restart
重启过程可能需要几分钟,期间GitLab服务暂时不可用。
检查版本信息
执行以下命令确认GitLab已升级到目标版本:
sudo gitlab-rake gitlab:env:info
或通过GitLab Web界面查看「Help」→「About GitLab」。
测试核心功能
登录GitLab Web界面,创建测试项目、推送代码、触发CI/CD流水线,验证项目托管、代码管理、自动化流程等功能是否正常。
查看系统日志
若升级后出现异常,可通过以下命令查看GitLab服务日志定位问题:
sudo gitlab-ctl tail
日志会显示服务启动、数据库迁移、配置加载等过程的详细信息。
停机时间
单节点GitLab实例升级过程中,服务会短暂中断(约5-15分钟,取决于数据量),建议在低峰期操作,并提前通知用户。
中间版本要求
跨大版本升级(如14.x→17.x)必须依次经过所有中间版本,不可跳过。例如,从14.0.x升级到17.x,需按顺序完成14.0.x→14.3.x→14.9.x→15.0.x→…→17.x的升级,确保数据库结构、API接口等兼容。
Gitaly服务器升级
若使用独立Gitaly服务器(分布式存储场景),需先升级Gitaly服务器到与GitLab应用服务器兼容的版本,再升级GitLab应用,避免gRPC通信错误。
安全补丁优先
若当前版本存在未修复的高危漏洞(如GitLab 17.6.1修复的远程代码执行漏洞),应立即升级到包含安全补丁的最新版本,而非等待目标版本。
Docker方式升级
若使用Docker安装GitLab,升级流程略有不同:
docker pull gitlab/gitlab-ce:latest;docker stop gitlab && docker rm gitlab;docker run --detach \
--hostname your-gitlab-domain.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
升级后需验证数据卷权限(确保git用户对/srv/gitlab/data有读写权限)。