Gitlab13.x升级14.4

Gitlab 版本

docker 方式安装的

升级路径

13.12.5 -> 14.0.11-ce.0 -> 14.1.7-ce.0 -> 14.2.5-ce.0 -> 14.3.3-ce.0 -> 14.4.0-ce.0
因不确定性,保险起见,每个版本均升级一遍
尝试过直接升级 14.4,提示需要先升级到 14.0 版本

备份

1
2
3
4
gitlab-backup create

cp /etc/gitlab/gitlab.rb /备份目录
cp /etc/gitlab/gitlab-secrets.json /备份目录

升级

升级 14.0.11

docker 直接升级 gitlab/gitlab-ce:14.0.11-ce.0,此版本笔者未遇到问题

升级 14.1.7

docker 直接升级 gitlab/gitlab-ce:14.1.7-ce.0,此版本笔者未遇到问题

升级 14.2.5

  1. 升级此版本支持需要先手动处理迁移 pg 数据库
  2. 查询数据库,找出需要处理的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
gitlab-psql
select job_class_name, table_name, column_name, job_arguments from batched_background_migrations where status <> 3;

查询结果示例

gitlabhq_production=# select job_class_name, table_name, column_name, job_arguments from batched_background_migrations where status <> 3;
job_class_name | table_name | column_name | job_arguments
---------------------------------------+-----------------------+-------------+------------------------------------------------------------------------------------
CopyColumnUsingBackgroundMigrationJob | events | id | [["id"], ["id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | push_event_payloads | event_id | [["event_id"], ["event_id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | ci_job_artifacts | id | [["id", "job_id"], ["id_convert_to_bigint", "job_id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | ci_builds | id | [["id", "stage_id"], ["id_convert_to_bigint", "stage_id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | ci_build_trace_chunks | id | [["build_id"], ["build_id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | taggings | id | [["id", "taggable_id"], ["id_convert_to_bigint", "taggable_id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | deployments | id | [["deployable_id"], ["deployable_id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | ci_stages | id | [["id"], ["id_convert_to_bigint"]]
CopyColumnUsingBackgroundMigrationJob | ci_builds_metadata | id | [["id"], ["id_convert_to_bigint"]]

gitlab-rake gitlab:background_migrations:finalize[$job_class_name,$events,$column_name,$job_arguments]

替换对应的参数,job_arguments内,需加\
  1. 以下为可能出现的参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,events,id,'[["id"]\, ["id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_job_artifacts,id,'[["id"\, "job_id"]\, ["id_convert_to_bigint"\, "job_id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_stages,id,'[["id"]\, ["id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_build_trace_chunks,id,'[["build_id"]\, ["build_id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,push_event_payloads,event_id,'[["event_id"]\, ["event_id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,deployments,id,'[["deployable_id"]\, ["deployable_id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_builds_metadata,id,'[["id"]\, ["id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,taggings,id,'[["id", "taggable_id"]\, ["id_convert_to_bigint"\, "taggable_id_convert_to_bigint"]]']

gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_builds,id,'[["id", "stage_id"]\, ["id_convert_to_bigint"\, "stage_id_convert_to_bigint"]]']

  1. 手动执行上一步的命令,再升级为gitlab/gitlab-ce:14.2.5-ce.0
  2. 参考官方文档
  3. https://docs.gitlab.com/ee/update/index.html#1420
  4. https://docs.gitlab.com/ee/update/index.html#checking-for-background-migrations-before-upgrading

升级 14.3.3

docker 直接升级 gitlab/gitlab-ce:14.3.3-ce.0,此版本笔者未遇到问题

升级 14.4.0

docker 直接升级 gitlab/gitlab-ce:14.4.0-ce.0,此版本笔者未遇到问题