温馨提示×

Linux中GitLab如何更新

小樊
39
2025-12-10 15:34:00
栏目: 智能运维

Linux 上 GitLab 更新步骤

一 准备与升级前检查

  • 确认安装方式与版本:使用 Omnibus 包 还是源码/容器;查看当前版本(网页 /help 或服务器命令)。
  • 制定升级计划:优先在测试环境演练,准备回滚方案,避免生产中断。
  • 核对受支持的升级路径:不可直接跨多个主版本(例如从 10.3 直接到 12.7)。落后多个版本时,需要按路径逐步升级。
  • 等待后台迁移完成:升级前确保后台迁移队列已清空;建议相邻主/次版本升级间隔不超过 1 周,以便迁移完成。
  • 多节点前置:如使用 Gitaly 集群,先升级 Gitaly 服务器,再升级应用节点,避免 gRPC 不兼容。
  • 备份:强烈建议完整备份;Omnibus 安装会在升级前自动备份数据库,如需跳过可创建空文件 /etc/gitlab/skip-auto-backup,但手动全量备份依然推荐。

二 标准升级流程(Omnibus 包,单节点)

  • 备份(强烈推荐手动备份配置与密钥):
    • 数据备份:sudo gitlab-backup create(GitLab 12.2+;旧版可用 sudo gitlab-rake gitlab:backup:create)
    • 配置文件与密钥:sudo cp /etc/gitlab/gitlab.rb /backup/;sudo cp /etc/gitlab/gitlab-secrets.json /backup/
  • 更新软件包索引并升级:
    • Ubuntu/Debian:sudo apt update && sudo apt install gitlab-ee(CE 用 gitlab-ce)
    • RHEL/CentOS 7、Amazon Linux 2:sudo yum install gitlab-ee
    • RHEL/AlmaLinux 8/9、Amazon Linux 2023:sudo dnf install gitlab-ee
    • SUSE:sudo zypper install gitlab-ee
  • 等待安装与自动迁移完成,访问页面出现 Deploy in progress 或短暂 502 属正常。
  • 验证:访问 /help 确认版本;执行 sudo gitlab-ctl status 检查组件;必要时执行 sudo gitlab-rake gitlab:check。

三 指定版本与多节点零停机

  • 指定版本升级(当存在多阶段升级路径时):
    • 列出可用版本:
      • Ubuntu/Debian:apt-cache madison gitlab-ee
      • RHEL/CentOS 7、Amazon Linux 2:yum --showduplicates list gitlab-ee
      • RHEL/AlmaLinux 8/9、Amazon Linux 2023:dnf --showduplicates list gitlab-ee
      • SUSE:zypper search -s gitlab-ee
    • 安装目标版本(示例,按系统选择其一,CE 将 ee 换为 ce):
      • Ubuntu/Debian:sudo apt install gitlab-ee=-ee.0
      • RHEL/CentOS 7:sudo yum install gitlab-ee--ee.0.el7
      • RHEL/AlmaLinux 8/9:sudo dnf install gitlab-ee--ee.0.el8
      • Amazon Linux 2023:sudo dnf install gitlab-ee--ee.0.amazon2023
      • SUSE:sudo zypper install gitlab-ee=-ee.sles15(或 .sles12)
  • 多节点零停机:按官方指引分阶段升级(先 Gitaly,再其余节点),或选择带停机的升级方式。

四 常见问题与回滚

  • 升级失败回滚:使用之前的备份恢复(先停止相关服务),例如:
    • 停止服务:gitlab-ctl stop unicorn && gitlab-ctl stop sidekiq
    • 恢复数据:gitlab-rake gitlab:backup:restore BACKUP=<备份时间戳>
    • 启动:gitlab-ctl start
  • 后台迁移未完成:升级前务必确认后台迁移队列已清空;主/次版本升级间隔建议 ≤1 周,必要时增加处理 background_migration 队列的 Sidekiq 并发以加速。
  • 版本特定变更:跨主版本可能需手动操作(如 13→14 默认应用服务器由 Unicorn 切换为 Puma,需调整 gitlab.rb 并重新配置)。
  • 升级顺序要点:多节点先升 Gitaly;单节点升级期间对外不可用(显示 Deploy in progress 或 502)。

0