gitlab-ee 13.x->14.x->15.x->16.x升级踩坑记

安装-升级

升级时需要打开如下网址规划路径:

https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=13.3.9\&distro=centos\&auto=true

导入gitlab官方软件仓库

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

自检查

bash 复制代码
gitlab-rake gitlab:check SANITIZE=true

列出后台是否存在正在运行的migration

bash 复制代码
gitlab-rake db:migrate:status
gitlab-rake db:migrate

备份

bash 复制代码
gitlab-rake gitlab:backup:create
ls /var/opt/gitlab/backups

恢复

bash 复制代码
cp ${tar} /var/opt/gitlab/bakcups/
gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1704745822_2024_01_09_13.4.1-ee
gitlab-ctl reconfigure

卸载

bash 复制代码
gitlab-ctl stop
rpm -e gitlab-ee-${version}-ee.0.el8.x86_64.rpm
rm -rf /etc/gitlab
rm -rf /opt/gitlab
rm -rf /var/opt/gitlab
rm -rf /var/log/gitlab
rm -rf /run/gitlab

升级过程中遇到问题一般解决方案

1、数据库migrate失败(频率最高)

复制代码
   查看caused by原因,手动解决问题后,执行:gitlab-rake db:migrate
   执行完毕后,输入:gitlab-rake db:migrate:status以查看迁移状态
  **注意:最好按提示one-by-one执行,即执行gitlab-rake db:migrate后看报错,然后解决报错,再执行gitlab-rake db:migrate,直到全部成功**
   全部迁移完成后下执行:gitlab-ctl reconfigure

2、提示restart某个组件以启用新版版本

按提示执行即可,也可全部重启,按个人喜好

3、升级过程中由于没有执行2,导致数据库migrate失败,启动组件超时

可以先重启gitlab: gitlab-ctl restart

若数据库迁移失败,参考问题1

若启动组件超时,重新配置即可:gitlab-ctl reconfigure

最后 重启gitlab: gitlab-ctl restart

升级到13.8.8遇到的问题

PG::DuplicateTable: ERROR: relation "public.postgres_indexes" already exists

bash 复制代码
sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
DROP VIEW public.postgres_indexes;
exit;

PG::DuplicateTable: ERROR: relation "postgres_index_bloat_estimates" already exists

bash 复制代码
sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
Drop view public.postgres_index_bloat_estimates;
exit;

最后

bash 复制代码
gitlab-ctl reconfigure

升级到14.3.6遇到的问题

Expected batched background migration for the given configuration to be marked

as 'finished', but it is 'active':

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

Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active': {:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", :table_name=>"ci_stages", :column_name=>"id", :job_arguments=>[["id"], ["id_convert_to_bigint"]]}

Finalize it manualy by running

bash 复制代码
sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_stages,id,'[["id"]\, ["id_convert_to_bigint"]]']

Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active': {:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", :table_name=>"ci_builds_metadata", :column_name=>"id", :job_arguments=>[["id"], ["id_convert_to_bigint"]]}

Finalize it manualy by running

bash 复制代码
sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,ci_builds_metadata,id,'[["id"]\, ["id_convert_to_bigint"]]']

Expected batched background migration for the given configuration to be marked as 'finished', but it is 'active': {:job_class_name=>"CopyColumnUsingBackgroundMigrationJob", :table_name=>"push_event_payloads", :column_name=>"event_id", :job_arguments=>[["event_id"], ["event_id_convert_to_bigint"]]}

Finalize it manualy by running

bash 复制代码
sudo gitlab-rake gitlab:background_migrations:finalize[CopyColumnUsingBackgroundMigrationJob,push_event_payloads,event_id,'[["event_id"]\, ["event_id_convert_to_bigint"]]']

migrate后需要执行

bash 复制代码
gitlab-ctl reconfigure

升级到14.9.5

bash 复制代码
gitlab-ctl restart

升级到15.4.6遇到的问题

大规模升级依赖

bash 复制代码
gitlab-ctl restart

升级到16.1.5遇到的问题

bash 复制代码
gitlab-ctl restart

升级到16.3.6遇到的问题

bash 复制代码
gitlab-ctl restart

升级到16.7.0遇到的问题

bash 复制代码
gitlab-ctl restart
相关推荐
极小狐9 小时前
GitLab 18.2 发布几十项与 DevSecOps 有关的功能,可升级体验【二】
ci/cd·gitlab·devsecops·devops·极狐gitlab
不念霉运3 天前
2025 Gitee vs. GitLab:全面对比与选择指南
gitee·gitlab
水瓶_bxt3 天前
创建 GitLab Runner 使用CICD自动化部署容器
eureka·自动化·gitlab
黑心的奥利奥4 天前
Docker配置Gitlab-runner实现自动化容器化部署前端项目
docker·自动化·gitlab
wuzuyu3655 天前
在腾讯云上安装gitlab
云计算·gitlab·腾讯云
xiaodaiwang5 天前
OpenEuler 22.03 系统上安装配置gitlab runner
gitlab
TimberWill5 天前
gitlab私服搭建
gitlab
中东大鹅5 天前
访问 gitlab 跳转 0.0.0.0
gitlab
guygg886 天前
配置本地git到gitlab并推送
git·gitlab
大A崛起6 天前
Gitlab-CI实现组件自动推送
ci/cd·gitlab·github