温馨提示×

CentOS上GitLab的更新和维护流程是什么

小樊
44
2026-01-10 03:23:01
栏目: 智能运维

CentOS 上 GitLab 的更新与维护流程

一 升级前准备

  • 查看并记录当前版本与环境信息:执行命令查看版本与组件状态,便于回滚与对比。示例:sudo gitlab-rake gitlab:env:info。同时确认操作系统与依赖(如 curl、openssh-server、postfix)处于可用状态。
  • 完整备份:先备份数据与关键配置,避免升级失败导致数据不可恢复。
    • 备份命令:sudo gitlab-rake gitlab:backup:create。默认备份目录为 /var/opt/gitlab/backups,可在 /etc/gitlab/gitlab.rb 中通过 gitlab_rails['backup_path'] = "/your/path" 自定义,修改后执行 sudo gitlab-ctl reconfigure 使配置生效。
    • 手动备份敏感与关键配置:/etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json 以及(如用到)/var/opt/gitlab/nginx/conf/etc/postfix/main.cf。注意:常规备份不会包含上述敏感文件。
  • 选择升级方式:
    • 仓库在线升级:sudo yum update gitlab-ce
    • RPM 离线升级:sudo rpm -Uvh gitlab-ce-<version>.rpm
  • 升级路径原则:避免跨多版本一次性升级,优先按官方路径逐级升级(例如从 14.x 先到 14.10.x,再到 15.0.0,再到目标版本),以减少数据库迁移风险。

二 标准升级步骤

  1. 维护窗口与通知:选择业务低峰期,提前通知用户停机时间窗口。
  2. 停止相关服务:为减少数据库迁移冲突,先停止应用与任务队列。示例:sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq,必要时 sudo gitlab-ctl stop nginx
  3. 执行备份:再次执行 sudo gitlab-rake gitlab:backup:create,确保有最新可回滚点。
  4. 执行升级:
    • 在线:sudo yum update gitlab-ce
    • 离线:sudo rpm -Uvh gitlab-ce-<version>.rpm
  5. 重新配置与启动:执行 sudo gitlab-ctl reconfigure,随后 sudo gitlab-ctl restart
  6. 运行数据库迁移:升级后执行 sudo gitlab-rake db:migrate 完成数据结构变更;如需检查迁移状态可执行 sudo gitlab-rake db:migrate:status
  7. 验证:访问 Web 页面与管理界面确认版本与功能正常;也可通过 sudo gitlab-rake gitlab:check 做健康检查。

三 升级后的验证与回滚

  • 版本核对:执行 sudo gitlab-rake gitlab:env:info 或查看 /opt/gitlab/version-manifest.txt 的头部版本行,确认已到目标版本。
  • 功能与作业验证:登录界面与后台检查项目、仓库、CI/CD 任务、Runner 注册与执行是否正常。
  • 日志排查:如有异常,实时查看日志定位问题,例如:sudo gitlab-ctl tail,重点查看 /var/log/gitlab/gitlab-rails/production.log
  • 回滚方案:若升级失败或异常不可控,使用最近一次备份进行恢复(建议先停机):
    • 停止服务:sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq
    • 恢复数据:sudo gitlab-rake gitlab:backup:restore BACKUP=<timestamp>
    • 启动:sudo gitlab-ctl start

四 日常维护与常见问题处理

  • 自动备份:通过 crontab 配置定时任务,例如每天 02:00 备份:0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create;定期清理过期备份,避免磁盘占满。
  • 配置与密钥管理:修改 /etc/gitlab/gitlab.rb 后执行 sudo gitlab-ctl reconfigure 使配置生效;迁移或恢复时务必确保 gitlab-secrets.jsongitlab.rb 一致,否则可能出现权限或签名错误。
  • Runner 兼容与维护:保持 GitLab 与 GitLab Runner 版本匹配(如均使用 17.x 系列);Runner 配置变更或升级后按需重新注册。
  • 常见问题速解:
    • 升级后 500 错误:多为数据库迁移未完成,执行 sudo gitlab-rake db:migrate:status 查看状态,必要时 sudo gitlab-rake db:migrate
    • 执行 reconfigureChef client 占用ps aux | grep gitlab 查找进程 PID,必要时 kill -9 <PID> 后重试。
    • 权限问题(如仓库目录):如遇到目录权限错误,可按需修正,例如 sudo chmod 2770 /var/opt/gitlab/git-data/repositories
    • 端口冲突:在 /etc/gitlab/gitlab.rb 调整 external_url 与端口,然后 sudo gitlab-ctl reconfigure 使配置生效。

0