升级路线

参考链接:https://docs.gitlab.com/ee/update/#installation-using-docker

8.11.Z -> 8.12.0 -> 8.17.7 -> 9.5.10 -> 10.8.7 -> 11.11.8 -> 12.0.12 -> 12.1.17 -> 12.10.14 -> 13.0.14 -> 13.1.11 -> 13.5.4 - > latest 13.Y.Z

在主要版本升级期间,可能会发生更重要的迁移。为确保这些成功:
在主要版本跳转过程中,递增到第一个次要版本(X.0.Z)。
继续升级到较新的版本。
在升级到新的主要版本之前,请确保所有后台迁移已完全完成。

升级操作

想法: 对于非 docker 部署的 gitlab 升级操作可以是先将 gitlab 数据备份后,再将其数据目录挂载至 docker 容器内进行升级操作; 或者部署一个相同版本的 gitlab docker 镜像,通过备份包还原后再升级 从当前相同的 gitlab 版本开始,确保各指标正确无异常后开始升级。

10 版本至 10.8.7 最高版本

获取当前大版本的最新版

当前为 10.6.4 大版本的最新版为 10.8.7

  1. docker pull gitlab/gitlab-ce:10.8.7-ce.0

修改 docker-compose.yml 的镜像

  1. version: '3'
  2. services:
  3. git:
  4. image: gitlab/gitlab-ce:10.8.7-ce.0
  5. container_name: git
  6. restart: always
  7. network_mode: bridge
  8. hostname: ${GIT_HOSTNAME}
  9. ports:
  10. - "${GIT_HTTP_PORT}:80"
  11. - "${GIT_HTTPS_PORT}:443"
  12. - "${GIT_SSH_PORT}:22"
  13. environment:
  14. GITLAB_OMNIBUS_CONFIG: |
  15. external_url 'ip或者域名'
  16. gitlab_rails['gitlab_shell_ssh_port'] = 端口号
  17. volumes:
  18. - /opt/gitlab/config:/etc/gitlab:z
  19. - /opt/gitlab/data:/var/opt/gitlab:z
  20. - /opt/gitlab/logs:/var/log/gitlab:z
  21. - /etc/localtime:/etc/localtime:ro
  22. - /opt/gitlab/data/backups:/var/opt/gitlab/backups

image.png

后台作业检查

  1. docker exec -it git bash
  2. # 进入控制台
  3. gitlab-rails console
  4. # 作业检查
  5. puts Sidekiq::Queue.new("background_migration").size
  6. Sidekiq::ScheduledSet.new.select { |r| r.klass == 'BackgroundMigrationWorker' }.size
  7. # 如果有作业则执行
  8. scheduled_queue = Sidekiq::ScheduledSet.new
  9. pending_job_classes = scheduled_queue.select { |job| job["class"] == "BackgroundMigrationWorker" }.map { |job| job["args"].first }.uniq
  10. pending_job_classes.each { |job_class| Gitlab::BackgroundMigration.steal(job_class) }
  11. # 退出
  12. exit

image.png

重启

  1. docker-compose up -d

image.png

日志查看

image.png

前端页面及配置检查

image.png

10.8.7 版本至 11.0.0 最低版本

修改 docker-compose.yml

配置文件中镜像的版本号

  1. gitlab/gitlab-ce:11.0.0-ce.0
  2. # 重启
  3. docker-compose up -d

image.png

11 版本至 11.11.8 最高版本

修改 docker-compose.yml

配置文件中镜像的版本号

  1. gitlab/gitlab-ce:11.11.8-ce.0
  2. # 重启
  3. docker-compose up -d

image.png

日志查看

image.png

升级普罗米修斯

两种方式
https://docs.gitlab.com/omnibus/update/gitlab_11_changes.html#114

  1. # 跳过数据转换
  2. gitlab-ctl prometheus-upgrade --skip-data-migration

image.pngimage.png

  1. gitlab-ctl prometheus-upgrade

image.png
image.png

前端页面及配置检查

image.png

11.11.8 版本至 12.0.0 最低版本

防止意外,升级前再备份一次

修改 docker-compose.yml

配置文件中镜像的版本号

  1. gitlab/gitlab-ce:12.0.0-ce.0
  2. # 重启
  3. docker-compose up -d

日志查看

image.png

前端页面及配置检查

image.png

12 版本至 12.10.14 最高版本

如果您打算从升级12.0.Z12.10.Z,则有必要在升级12.1.Z之前执行中间升级到,12.10.Z以避免#215141之类的问题。

  1. # 依次替换镜像
  2. gitlab/gitlab-ce:12.0.12-ce.0
  3. gitlab/gitlab-ce:12.1.17-ce.0
  4. gitlab/gitlab-ce:12.10.14-ce.0
  5. # 重启
  6. docker-compose up -d

gitlab/gitlab-ce:12.0.12-ce.0

image.png
image.png

grafana 在升级至 13 版本时将被更新

若执行了 gitlab-ctl prometheus-upgrade 未跳过则直接重置

image.png
image.png

gitlab/gitlab-ce:12.1.17-ce.0

image.png

gitlab/gitlab-ce:12.10.14-ce.0

image.png
image.png

验证是否正常,若正常则可以删除旧版数据库

  1. sudo rm -rf /var/opt/gitlab/postgresql/data.9.6
  2. sudo rm -f /var/opt/gitlab/postgresql-version.old

image.png

12.10.14 版本至 13.0.0 最低版本

  1. gitlab/gitlab-ce:13.0.0-ce.0
  2. # 重启
  3. docker-compose up -d

image.png
image.png
image.png

新增

用户 GitLab Migration Bot
用户组 lost-and-found

13 版本至 13.y.z 最高版本

注意事项

  • 在 13.1.0 中,Git 至少是 v2.24
  • 具有较旧 Rails 版本的 GitLab 服务器将无法识别 CSRF 令牌-这可能会导致非 GET 请求失败 ```bash gitlab/gitlab-ce:13.0.14-ce.0 gitlab/gitlab-ce:13.1.11-ce.0 gitlab/gitlab-ce:13.5.4-ce.0 gitlab/gitlab-ce:13.7.9-ce.0

重启

docker-compose up -d ```

gitlab/gitlab-ce:13.0.14-ce.0

image.png
image.png
image.png

gitlab/gitlab-ce:13.1.11-ce.0

image.png
image.png

gitlab/gitlab-ce:13.5.4-ce.0

须要先升级到这个版本,未来得及截图

gitlab/gitlab-ce:13.7.9-ce.0

image.png
image.png

gitlab/gitlab-ce:13.9.4-ce.0

image.png
image.png
image.png