目 录CONTENT

文章目录

升级gitlab版本

Administrator
2025-07-29 / 0 评论 / 2 点赞 / 23 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

升级gitlab版本

概述

背景

Docker 搭建的 GitLab 11.10.4 版本较旧,拟升级至虚拟机部署的 16.0.1 版本,并安装适配的 GitLab Runner 实现 CI,代码合并需流水线通过。

升级目标

  1. 降低用户影响:升级过程中需将对现有用户的影响降至最低,确保升级耗时尽可能短。
    升级结束后,用户仅需进行极简操作,即可无缝切换至新环境下的 16.0.1 版本。

  2. 保障数据完整性:需将现有版本中的全部数据(涵盖用户信息、组织架构、项目文件及提交记录等)完整无损地迁移至新环境的 16.0.1 版本中。

升级前置条件

环境清单规划

服务器IP地址用途描述部署方式GitLab版本参考链接
192.168.80.125base虚拟机不涉及不涉及不涉及
192.168.80.130用于造数,模拟原始环境Docker容器化部署11.10.4(较旧)Docker搭建GitLab 11.10.4
192.168.80.131虚拟机直接部署16.0.1版本虚拟机部署16.0.1(较新)虚拟机安装GitLab 16.0.1
192.168.80.132本地yum源,手工升级至16.0.1版本虚拟机部署11.10.8 → 16.0.1(升级)暂无
192.168.80.133脚本化执行虚拟机部署11.10.8(可能后续脚本升级)暂无

gitlab升级路径规划

升级路径

  • 跨度版本:11.10.4(不含)至16.0.1(含)共发布428个版本

  • 升级策略:通过官方定义的17个「升级站点」实现跨越式升级

  • 路径依据:参考官方升级路径工具生成升级路径查询

    序号目标版本关键升级节点
    111.10.811.10.4 → 11.10.8
    211.11.811.10.8 → 11.11.8
    312.0.1211.11.8 → 12.0.12
    412.1.1712.0.12 → 12.1.17
    512.10.1412.1.17 → 12.10.14
    613.0.1412.10.14 → 13.0.14
    713.1.1113.0.14 → 13.1.11
    813.8.813.1.11 → 13.8.8
    913.12.1513.8.8 → 13.12.15
    1014.0.1213.12.15 → 14.0.12
    1114.3.614.0.12 → 14.3.6
    1214.9.514.3.6 → 14.9.5
    1314.10.514.9.5 → 14.10.5
    1415.0.514.10.5 → 15.0.5
    1515.4.615.0.5 → 15.4.6
    1615.11.1315.4.6 → 15.11.13
    1716.0.1(最终版本)15.11.13 → 16.0.1

upgrade_path

安装包准备

安装yum-utils

yum install -y yum-utils

下载rpm包

此次升级涉及的rpm包为:

mkdir -p gitlab_rpm
cd gitlab_rpm

yumdownloader gitlab-ce-11.10.8-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-12.0.12-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-12.1.17-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-12.10.14-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-13.0.14-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-13.1.11-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-13.8.8-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-13.12.15-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-14.0.12-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-14.3.6-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-14.9.5-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-15.0.5-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-15.4.6-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-15.11.13-ce.0.el7.x86_64.rpm
yumdownloader gitlab-ce-16.0.1-ce.0.el7.x86_64.rpm  

为节省时间,可先下载好rpm包,配置好本地yum源后,再进行升级。
download_rpm

yum源配置

在升级操作期间,根据统计数据,整个过程需下载总计约 14GB 的数据。为避免因升级过程中网络波动导致下载失败,建议提前完成 YUM 源的配置。

需特别强调:必须通过配置 YUM 源进行升级,不可使用 rpm -ivh 方式直接安装升级。

原因在于,yum install 命令会先卸载相关软件包的老版本,再安装新版本,确保升级过程的完整性和依赖关系处理;而 rpm -ivh 仅执行安装操作,无法处理依赖关系或卸载旧版本,可能导致系统异常。

具体配置yum源参考文章:离线环境必备-本地YUM源搭建全流程指南

升级实操

由于旧数据是dokcer容器部署,需要先备份导出数据,在11.10.4虚拟机版本导入,再逐步升级到16.0.1版本。

11.10.4的docker版本备份

  • 进入容器内部
docker exec -it gitlab bash
  • 备份数据
gitlab-rake gitlab:backup:create

backup

  • 执行说明:
    • 该命令会生成包含数据库、附件和配置的完整备份包
    • 备份文件默认存储路径:/var/opt/gitlab/backups/
    • 文件命名规则:<时间戳>_<GitLab版本>_gitlab_backup.tar
    • 建议定期执行备份并验证文件完整性
  • 注意事项:
    • 确保备份目录有足够存储空间
    • 生产环境建议配置自动化备份策略
    • 备份前建议暂停非关键业务操作
    • 请注意生成的文件的所属用户和权限(git:git),后续传到新环境也需要这个用户和权限,否则会有Unpacking backup ... tar: xxxx.tar: Cannot open: Permission denied

11.10.4的虚拟机gitlab安装

gitlab各个版本的安装思路类似,具体可以参考张师傅安装16.0.1版本的步骤。
虚拟机安装GitLab 16.0.1

yum install -y gitlab-ce-11.10.4-ce.0.el7.x86_64.rpm
  • 执行说明:
    • 若需升级到其他版本,请替换相应rpm文件名
    • 建议在维护窗口内进行操作以减少对用户的影响
  • 注意事项:
    • 确保服务器网络通畅以便顺利完成下载和安装过程
    • 在升级前务必备份重要数据以防万一

11.10.4的虚拟机gitlab恢复

gitlab-rake gitlab:backup:restore BACKUP=1744622154_2025_04_14_11.10.4
  • 执行说明:
    • 需要将备份文件上传到/var/opt/gitlab/backups/目录下,并确保文件权限为git:git
    • 需替换BACKUP参数为实际备份文件名(<时间戳>_<GitLab版本>,注意不带_gitlab_backup.tar)
    • 建议在测试环境验证恢复流程后再执行生产环境操作
  • 验证步骤:
    • 确认恢复后服务状态:sudo gitlab-ctl status
    • 验证关键数据(用户、项目、仓库等)完整性

升级到11.10.8版本及后续版本

依次升级到11.10.8版本及后续版本,直至达到目标版本。

yum install -y gitlab-ce-11.10.8-ce.0.el7.x86_64.rpm
...
yum install -y gitlab-ce-16.0.1-ce.0.el7.x86_64.rpm
  • 执行说明:
    • 使用yum命令逐个版本升级,会自动卸载掉老版本,并安装新版本
    • 每次升级前,请确保已备份重要数据
    • 建议重启验证是否升级成功:sudo gitlab-ctl restart
    • 验证版本1:sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
    • 验证版本2:浏览器登陆,查看右上角-->问号-->Help
    • 升级后,请务必验证所有功能是否正常工作

在升级过程中遇到的常见问题

下一篇文章会详细介绍在升级过程中遇到的常见问题及解决方案。

归档仓库

新系统投产前数日,应暂停旧环境 GitLab 新增用户操作,待系统迁移升级至新环境后统一创建。迁移完成后,需对原仓库归档并设置防误操作机制,确保归档后只读不写。

后续将用 Python 脚本实现仓库归档,确保归档后拒绝代码提交。

参考检查项

序号检查类别-具体项检查项详细说明检查人员检查结论
1用户信息-用户列表检查用户列表是否完整、准确,无遗漏或错误。张三通过
2用户信息-电子邮件地址验证用户电子邮件地址格式是否正确(如包含@符号、域名有效等),并确认其有效性(如发送测试邮件验证)。李四通过
3用户信息-用户头像检查用户头像是否显示正常,无损坏或失真,且符合公司或平台的头像规范(如尺寸、格式等)。王五通过
4用户信息-用户公钥确认用户公钥是否已正确配置在系统中,且可用于加密通信或身份验证。赵六通过
5用户信息-访问令牌(token)检查访问令牌是否已正确生成,且具有相应的权限,可用于访问受保护的资源。孙七通过
6组信息-基本概况检查组的基本信息(如名称、描述、创建时间等)是否完整、准确,无错误或遗漏。周八通过
7组信息-关联项目信息验证组所关联的项目信息(如项目名称、ID、状态等)是否正确、完整,且与实际情况相符。吴九通过
8组信息-成员构成信息检查组的成员信息(如成员姓名、角色、权限等)是否准确,且包含所有必要成员,无遗漏或错误。郑十通过
9组信息-组头像确认组头像是否显示正常,无损坏或失真,且符合公司或平台的头像规范。陈一通过
10合并请求(合并申请)检查合并请求的状态(如待审核、已批准、已拒绝等),合并内容是否正确,且与预期一致。刘二通过
11项目信息验证项目的基本信息(如名称、描述、负责人等)、配置(如权限设置、版本控制等)是否正确,且符合项目需求。朱三通过
12分支信息检查分支的创建、删除、合并等操作是否正确,且分支状态(如活跃、已合并等)与实际情况相符。钱四通过
13标签(TAG)验证标签的创建、使用是否正确,标签名称是否规范,且与代码版本或功能模块相关联。孙五通过
14提交历史记录检查提交历史是否完整,包含所有必要的提交信息(如提交者、时间、注释等),且提交记录无错误或遗漏。李六通过
15问题(ISSUE)验证问题的创建、分配、解决等状态是否正确,问题描述是否清晰,且与实际情况相符。周七通过
16里程碑检查里程碑的设定(如名称、目标、截止日期等)、完成情况是否正确,且里程碑状态(如已完成、进行中等)与实际情况相符。吴八通过
2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区