linux

Linux系统中如何升级GitLab版本

小樊
49
2025-10-12 04:44:15
栏目: 智能运维

一、升级前的准备工作

  1. 备份所有关键数据
    使用GitLab自带工具创建完整备份,涵盖数据库、项目仓库、CI/CD配置等。命令:sudo gitlab-rake gitlab:backup:create。备份完成后,检查/var/opt/gitlab/backups/目录下的备份文件是否生成(文件名格式为时间戳_版本号_gitlab_backup.tar)。
  2. 确认当前版本与升级路径
    运行sudo gitlab-rake gitlab:env:info查看当前GitLab版本(如15.11.0)。访问GitLab官方升级路径工具(如版本升级指南),确认从当前版本到目标版本需经过的中间版本(例如从15.11.0升级到16.11.0,可能需先升级到16.0.0)。禁止跨主要版本直接升级(如15.x17.x)。
  3. 检查系统环境
    • 确保系统已安装GitLab要求的依赖包(如CentOS需policycoreutils-python openssh-server openssh-clients postfix;Ubuntu需curl openssh-server ca-certificates)。
    • 确认磁盘空间充足(至少预留10GB以上用于备份和升级)。
    • 检查Gitaly服务器版本(若使用独立Gitaly节点),需先升级Gitaly至与目标GitLab版本兼容的版本。

二、具体升级步骤(以Omnibus安装为例)

  1. 停止GitLab相关服务
    避免升级过程中数据冲突,执行:sudo gitlab-ctl stop unicorn && sudo gitlab-ctl stop sidekiq && sudo gitlab-ctl stop nginx
  2. 更新软件包索引
    根据Linux发行版执行:
    • Debian/Ubuntu:sudo apt update
    • CentOS/RHEL:sudo yum makecache
  3. 升级GitLab包
    • 若使用Debian/Ubuntu(Omnibus安装):sudo apt install gitlab-ce(自动安装最新版本)。
    • 若使用CentOS/RHEL(Omnibus安装):
      1. 下载最新GitLab CE RPM包(如wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-16.11.10-ce.0.el7.x86_64.rpm)。
      2. 校验包完整性(如md5sum gitlab-ce-*.rpm,对比官方提供的MD5值)。
      3. 执行升级:sudo rpm -Uvh gitlab-ce-*.rpm
  4. 重新配置与重启服务
    运行sudo gitlab-ctl reconfigure应用新配置(如/etc/gitlab/gitlab.rb中的修改),然后重启服务:sudo gitlab-ctl restart

三、验证升级结果

  1. 检查版本信息
    运行sudo gitlab-rake gitlab:env:info,确认gitlab-rails/VERSION显示为目标版本(如16.11.0)。
  2. 访问Web界面
    通过浏览器访问GitLab(如http://your-server-ip),登录后查看“Help”→“About GitLab”,确认版本已更新。
  3. 检查服务状态
    运行sudo gitlab-ctl status,确保所有服务(unicornsidekiqnginx等)均为run状态。

四、常见问题处理

  1. 升级失败或报错
    • 查看GitLab日志定位问题:sudo gitlab-ctl tail(实时日志)或sudo less /var/log/gitlab/gitlab-rails/production.log(历史日志)。
    • 若某一步骤失败,可尝试回滚到上一个版本(需提前备份),或卸载当前版本后重新安装。
  2. 后台迁移未完成
    升级后若出现“Background migration in progress”错误,等待10-15分钟(或运行sudo gitlab-rake db:migrate:status检查迁移状态),避免强制刷新页面。
  3. 配置文件冲突
    若升级后配置文件(如/etc/gitlab/gitlab.rb)出现冲突,优先保留自定义配置(如external_urlgit_data_dirs),其余按官方文档调整。

0
看了该问题的人还看了