gitlab(14.10.5 - 16.3.6)升级历程

611 阅读3分钟

gitlab(14.10.5 - 16.3.6)升级历程

自说明

对于gitlab的安装部署以及升级, 我是不熟悉的, 并且对于linux的命令, 之前也只是熟悉一些常用的命令, 在上一次对另外一个系统进行整体应用的迁移后, 受益匪浅。借此 ,非常的开心有机会对gitlab进行升级(14.10.5 - 16.3.6) , 本文将记录在迁移过程中注意事项, 遇到的问题以及使用的命令。

方案

目前线上gitlab使用docker进行安装的, 将核心数据进行了对应目录的挂载。事情就变得简单起来了, 只需要将对应版本gitlab镜像启动, 同样挂载到以前的数据目录即可。因为gitlab的升级不能跨版本, 官网给出了版本升级路线Upgrade Path (gitlab-com.gitlab.io)。这样也有一个问题 , 万一升级过程中失败了 , 我想回退到原来的版本,但是数据已经被污染了。所以 , 我们可以将原有的挂载目录完整的复制一份, 在这一份数据进行升级, 升级完后将目录名称进行修改即可。

image-20231124091523984

升级过程

准备docker-compose文件内容

version: '3.4'

x-logging: &logging
  driver: "json-file"
  options:
    max-size: "10m"
    max-file: "1"

services: 
  gitlab:
    image: gitlab/gitlab-ce:15.0.5-ce.0(需要修改)
    container_name: gitlab-15.0.5(需要修改)
    restart: always
    hostname: xxxx(需要修改)
    environment: 
      TZ: Asia/Shanghai
      GITLAB_OMNIBUS_CONFIG: 
        external_url "xxxxx"(需要修改)
        gitlab_rails['gitlab_shell_ssh_port'] = 23022
        gitlab_rails['backup_keep_time'] = 2592000
        nginx['client_max_body_size'] = 0
        nginx['enable'] = true
        nginx['listen_port'] = 80
        nginx['listen_https'] = false
    ports: 
      - '80:80'
      - '23022:22'
    volumes:
      - '/data/gitlab2/config:/etc/gitlab'(需要修改)
      - '/data/gitlab2/logs:/var/log/gitlab'(需要修改)
      - '/data/gitlab2/data:/var/opt/gitlab'(需要修改)
      - '/data/gitlab2/backups:/var/opt/gitlab/backups'(需要修改)
      - '/data/gitlab2/cron.d:/etc/cron.d'(需要修改)
    logging: *logging

以上备注需要修改的地方, 都是在升级的过程中需要根据自身的环境进行对应修改的地方

接着就是启停docker-compose文件

docker-compose ps
docker-compose stop xxxx
docker-compose up -d

反复修改docker.compose脚本中的镜像版本 , 直至升级为目标版本

检查gitlab的状态

每次升级完gitlab后,都需要进行检查

0.gitlab-ctl status()
1.gitlab-rake gitlab:check()
2.gitlab-rake gitlab:doctor:secrets()
3.验证人员进行ui验证,登录上传下载代码,cicd整体流程()

注意:

**跨版本升级时, 一定要将当前整个挂载文件进行备份, 防止升级失败 **

在进行大版本的升级时, 会出现时间比较久的情况, 请耐心的等待, 一定不要急。

在升级15.11.13升级到16.1.5的时候, 出现了无法登录的问题, 当时心里有两个选择, 一个是就升级到15.11.13版本, 但是发现还是存在大的漏洞, 我最开始也是这样去做的, 升级到15.11.13就停下了, 作为可提供服务的版本。但是呢, 心里就是难受, 所以在面对16.1.5的异常问题(去查看了github的issue, 大家讨论过这个问题), 我选择了继续升级16.3.6版本,好的结果是16.3.6版本功能一切正常。

数据备份

根据自己的数据备份要求进行相应的备份。