升级
- 检查gitlab是否有问题
docker compose -f /home/wenzexu/app.yaml exec gitlab gitlab-rake gitlab:check
docker compose -f /home/wenzexu/app.yaml exec gitlab gitlab-rake gitlab:geo:check
- 备份当前数据, 记录当前Gitlab的容器镜像版本号(可以直接在UI中查看):
docker compose -f /home/wenzexu/app.yaml exec gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
- 关闭安装前数据库自动备份:
docker compose -f /home/wenzexu/app.yaml exec gitlab touch /etc/gitlab/skip-auto-backup
mkdir ./gitlab-bak
docker compose -f /home/wenzexu/app.yaml exec gitlab gitlab-backup create
docker compose -f /home/wenzexu/app.yaml cp gitlab:/var/opt/gitlab/backups/<_gitlab_backup.tar文件> ./gitlab-bak/
docker compose -f /home/wenzexu/app.yaml cp gitlab:/etc/gitlab/gitlab.rb ./gitlab-bak/
docker compose -f /home/wenzexu/app.yaml cp gitlab:/etc/gitlab/gitlab-secrets.json ./gitlab-bak/
- 双重备份:
tar -czvf gitlab-aux.tar.gz ./app/gitlab
; tar -czvf gitlab-runner-aux.tar.gz ./app/gitlab-runner
, 下载这两个文件
- 确保后台没有迁移任务
docker compose -f /home/wenzexu/app.yaml exec gitlab gitlab-rails runner -e production 'puts Gitlab::BackgroundMigration.remaining'
: 这是未执行的后台迁移任务的数量
docker compose -f /home/wenzexu/app.yaml exec gitlab gitlab-rails runner -e production 'puts Gitlab::Database::BackgroundMigration::BatchedMigration.queued.count'
: 这是等待执行的批量迁移任务的数量
- 或者直接查看UI: http://xxx.com/admin/background_jobs
- 保没有Runner正在处理作业, 防止runner获取到新任务
- 编辑
./app/gitlab/config/gitlab.rb
文件, 新增: nginx['custom_gitlab_server_config'] = "location ^~ /api/v4/jobs/request {\n deny all;\n return 503;\n}\n"
docker compose -f /home/wenzexu/app.yaml exec gitlab gitlab-cli reconfigure
- 再次确认是否有正在运行的runner任务
- 确定升级路径: https://gitlab-com.gitlab.io/support/toolbox/upgrade-path/, 请注意要选择gilab和gitlab-runner都有的最终版本号, 如gitlab有17.2.1-ce.0, gitlab-runner有v17.2.1
- 升级gitlab
- 升级postgresql数据库(可选, 一般gitlab升级的时候会自动升级postgresql)
- 查看gitlab版本和postgresql对应关系https://docs.gitlab.com/ee/administration/package_information/postgresql_versions.html
- 查看剩余磁盘空间是否足够存下另一个数据库副本:
docker compose -f /home/wenzexu/app.yaml exec gitlab du -sh /var/opt/gitlab/postgresql/data
- 升级到对应版本:
docker compose -f /home/wenzexu/app.yaml exec gitlab gitlab-ctl pg-upgrade -V 14
, 注意修改14为你要的版本
- 修改
app.yaml
文件中gitlab
服务的版本号
docker compose -f /home/wenzexu/app.yaml stop gitlab && docker compose -f /home/wenzexu/app.yaml rm gitlab
docker compose -f /home/wenzexu/app.yaml up -d gitlab
- 查看日志, 是否升级成功:
docker compose -f /home/wenzexu/app.yaml logs gitlab
- 按照升级路径重复上述过程
- 升级gitlab-runner:
- 修改
app.yaml
文件中gitlabr-runner
服务的版本号和gitlab最后的版本号匹配
docker compose -f /home/wenzexu/app.yaml stop gitlab-runner && docker compose -f /home/wenzexu/app.yaml rm gitlab-runner
docker compose -f /home/wenzexu/app.yaml up -d gitlab-runner
- 恢复自动备份, 恢复runner获取任务
docker compose -f /home/wenzexu/app.yaml exec gitlab rm /etc/gitlab/skip-auto-backup
- 编辑
./app/gitlab/config/gitlab.rb
文件, 删去nginx['custom_gitlab_server_config'] = "location ^~ /api/v4/jobs/request {\n deny all;\n return 503;\n}\n"
- 更新github中的
app.yaml
文件为当前版本: gitlab和gitlab-runner
- 删除多余的镜像
docker rmi <镜像1>
, docker rmi <镜像2>
, ...
参考资料