Ubuntu系统升级GitLab版本指南
备份所有关键数据
升级前必须备份GitLab的数据库、配置文件及项目数据,避免操作失误导致数据丢失。使用以下命令创建完整备份:
sudo gitlab-rake gitlab:backup:create
备份文件默认存储在/var/opt/gitlab/backups目录,建议将备份复制到远程存储(如S3、FTP)或其他安全位置。
检查当前GitLab版本
运行以下命令确认当前安装的GitLab版本及环境信息:
sudo gitlab-rake gitlab:env:info
记录当前版本号(如15.0.5-ce.0),以便后续选择兼容的目标版本。
阅读官方升级文档
访问GitLab官方发布说明(如CE版、EE版),确认目标版本的系统要求(如Ubuntu版本、Ruby版本)、兼容性要求(如数据库版本)及升级路径(如是否需要逐版本升级)。
系统准备
更新Ubuntu系统及软件包索引,确保系统处于最新状态:
sudo apt update && sudo apt upgrade -y
APT是Ubuntu下最便捷的GitLab升级方式,适用于大多数场景。
添加GitLab官方仓库
$(lsb_release -cs)为Ubuntu发行版代号,如focal对应22.04):curl https://packages.gitlab.com/gpg.key | sudo apt-key add -
sudo sh -c 'echo "deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/gitlab.list'
gitlab-ce替换为gitlab-ee即可。更新软件包并安装目标版本
更新本地软件包索引,然后安装指定版本的GitLab(以15.0.5-ce.0为例):
sudo apt update
sudo apt install gitlab-ce=15.0.5-ce.0 gitlab-ce-cli=15.0.5-ce.0
若未指定版本号,apt install会自动升级到仓库中的最新版本。
重新配置与重启服务
安装完成后,运行以下命令重新配置GitLab并重启服务:
sudo gitlab-ctl reconfigure # 应用配置变更
sudo gitlab-ctl restart # 重启GitLab服务
若GitLab通过Docker容器运行,升级流程如下:
拉取最新镜像
运行以下命令拉取GitLab社区版最新镜像(企业版替换为gitlab/gitlab-ee:latest):
docker pull gitlab/gitlab-ce:latest
停止并删除旧容器
停止当前运行的GitLab容器并删除(替换<container_name>为实际容器名):
docker stop <container_name>
docker rm <container_name>
启动新容器
使用最新镜像重新创建容器,确保挂载卷(数据持久化)与旧容器一致:
docker run --name gitlab -d --restart always \
-p 80:80 -p 443:443 -p 22:22 \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
检查GitLab状态
运行以下命令确认GitLab服务是否正常运行:
sudo gitlab-ctl status
所有服务(如unicorn、sidekiq、postgresql)应显示为run状态。
验证版本号
运行以下命令确认GitLab已升级到目标版本:
sudo gitlab-rake gitlab:env:info
或通过浏览器访问GitLab首页,查看版本信息。
运行健康检查
执行以下命令检查GitLab配置及数据库完整性:
sudo gitlab-ctl gitlab:check SANITIZE=true
若存在错误,根据提示修复(如重新配置数据库)。
停机时间
单节点GitLab升级过程中,服务会暂时不可用(通常5-10分钟),建议在低峰期操作,并提前通知用户。
Gitaly服务器升级
若使用外部Gitaly服务器,需先升级Gitaly到与GitLab兼容的版本,再升级GitLab应用服务器,避免gRPC通信错误。
安全补丁优先
若当前版本存在高危漏洞(如GitLab 17.6.1、17.5.3修复的RCE漏洞),应立即升级到包含安全补丁的最新版本,而非等待下一个大版本。
故障排除
sudo gitlab-ctl tail查看日志定位问题;sudo gitlab-ctl reconfigure重新生成配置;sudo gitlab-rake gitlab:backup:restore BACKUP=timestamp)。