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
相关推荐
西部森林牧歌11 小时前
Arbess零基础学习 - 使用Arbess+GitLab实现PHP项目构建/主机部署
ci/cd·gitlab·php·tiklab devops
爱宇阳3 天前
GitLab CI/CD 集成 Harbor 全面教程
ci/cd·gitlab·harbor
雪碧聊技术3 天前
gitLab如何新建分支(根据某个分支)
gitlab·new branch·新建分支
字节逆旅3 天前
如何解决代码冲突
gitlab
林晓lx4 天前
使用Git钩子+ husky + lint语法检查提高前端项目代码质量
前端·git·gitlab·源代码管理
爱宇阳4 天前
从容器化到自动化:Vue3 项目 Docker 部署与 GitLab CI/CD 集成 Harbor 全流程
docker·自动化·gitlab
爱宇阳4 天前
Spring Boot 项目 GitLab CI/CD 自动构建并推送到 Harbor 教程
spring boot·ci/cd·gitlab
爱宇阳4 天前
Vue3 项目 GitLab CI/CD 自动构建并推送到 Harbor 教程
ci/cd·gitlab
西部森林牧歌5 天前
Arbess零基础学习 - 使用Arbess+GitLab实现Node.js项目自动化构建/主机部署
ci/cd·node.js·gitlab·arbess·tiklab devops
极小狐6 天前
极狐GitLab 18.5 正式发布,更新 Maven 虚拟仓库 UI(Beta)、全新个人主页、实例级合规与安全策略管理 以及 DAST 认证脚本 等
java·gitlab·maven