警告
本文最后更新于 2023-05-25 12:02,文中内容可能已过时。
升级前准备
https://docs.gitlab.com/ee/update/
确认安装方式
官方文档
我这里使用的yum安装, 选择 Linux packages (Omnibus GitLab) 方式升级
升级前后检查
确认升级前后gitlab是没有问题的
https://docs.gitlab.com/ee/update/plan_your_upgrade.html#pre-upgrade-and-post-upgrade-checks
1
2
| gitlab-rake gitlab:check
gitlab-rake gitlab:geo:check # 老版本可能没有这个命令,忽略即可
|
升级前备份
使用yum安装仅自动备份 GitLab SQL 数据库(不包括其他一切!)
自己备份一份吧, 使用快照和gitlab命令都可以, 恢复请查看文档 https://docs.gitlab.com/ee/raketasks/backup_restore.html
1
2
3
4
5
6
7
8
9
| # 关闭安装前的数据库自动备份
touch /etc/gitlab/skip-auto-backup
# 手动备份
gitlab-rake gitlab:backup:create # 备份文件默认存储路径 /var/opt/gitlab/backups
# 备份配置文件和secret
cp /etc/gitlab/gitlab.rb{,.bak.$(date +%Y%m%d%H%M)}
cp /etc/gitlab/gitlab-secrets.json{,.bak.$(date +%Y%m%d%H%M)}
|
确认后台没有迁移任务
1
2
3
4
5
| # 未执行的后台迁移任务的数量
gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'
# 等待执行的批量迁移任务的数量
gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.queued.count'
|
老版本可能没有这些命令, 用UI查看也可以. http://xxx.com/admin/background_jobs
确认runner
使用如下方法可以防止runner获取到新的任务。
1
2
3
| nginx['custom_gitlab_server_config'] = "location /api/v4/jobs/request {\n deny all;\n return 503;\n}\n"
sudo gitlab-ctl reconfigure
|
然后再确认没有正在运行的 runner 任务
附加升级
https://docs.gitlab.com/ee/update/plan_your_upgrade.html#additional-features
在gitlab升级后, 如果安装了 runner 、 kubernetes agent 之类的东西, 也需要进行升级
确认升级版本
确认升级路径
升级路径可视化工具
https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/?current=12.0.12&target=15.11.6&distro=centos&auto=true&edition=ce
我的版本是12.0.3, 没有这个选项, 选择最近的下一个版本12.0.12, 稳妥的办法是先升级12.0.3 -> 12.0.12, 然后再按照升级路线图走。
确认不同版本升级细节
我需要先升级到12.0.12, 查看相关文档后, 发现没有需要注意的事项。
查看change log
https://docs.gitlab.com/omnibus/update/gitlab_12_changes.html
关于pg数据库升级
git / pg 版本对应关系 https://docs.gitlab.com/ee/administration/package_information/postgresql_versions.html
如果需要升级请查看官方文档, 一般升级gitlab都会自动升级pg https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server
手动升级示例
1
2
3
4
5
| # 查看剩余磁盘空间是否足够存下另一个数据库副本
du -sh /var/opt/gitlab/postgresql/data
# 升级到 pg 11 版本
gitlab-ctl pg-upgrade -V 11
|
如果数据库所在的分区容量不够,可以使用 –tmp-dir $DIR 参数指定另一个目录
配置gitlab yum仓库
https://packages.gitlab.com/gitlab/gitlab-ce/install#bash-rpm
1
| curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
|
升级
准备工作完成后, 就可以升级了
1
2
3
4
5
6
7
8
9
| # 确认版本存在
yum list --show-duplicates | grep gitlab | grep 12.0.12
# 安装
yum install gitlab-ce-12.0.12-ce.0.el7.x86_64
# 重新启动
gitlab-ctl reconfigure
gitlab-ctl restart
|