gitlab从11.11.3-ce.0升级到16.7.0-ce.0
docker pull gitlab/gitlab-ce:16.7.0-ce.0
docker pull gitlab/gitlab-ce:16.3.6-ce.0
docker pull gitlab/gitlab-ce:16.1.5-ce.0
docker pull gitlab/gitlab-ce:16.0.1-ce.0
docker pull gitlab/gitlab-ce:15.11.13-ce.0
docker pull gitlab/gitlab-ce:15.11.5-ce.0
docker pull gitlab/gitlab-ce:15.5.9-ce.0
docker pull gitlab/gitlab-ce:15.4.6-ce.0
docker pull gitlab/gitlab-ce:15.1.1-ce.0
docker pull gitlab/gitlab-ce:15.0.5-ce.0
docker pull gitlab/gitlab-ce:14.10.5-ce.0
docker pull gitlab/gitlab-ce:14.9.5-ce.0
docker pull gitlab/gitlab-ce:14.3.6-ce.0
docker pull gitlab/gitlab-ce:14.2.1-ce.0
docker pull gitlab/gitlab-ce:14.1.1-ce.0
docker pull gitlab/gitlab-ce:14.0.12-ce.0
docker pull gitlab/gitlab-ce:13.12.15-ce.0
docker pull gitlab/gitlab-ce:13.8.8-ce.0
docker pull gitlab/gitlab-ce:13.1.11-ce.0
docker pull gitlab/gitlab-ce:13.0.14-ce.0
docker pull gitlab/gitlab-ce:12.10.14-ce.0
docker pull gitlab/gitlab-ce:12.1.17-ce.0
docker pull gitlab/gitlab-ce:12.0.12-ce.0
docker pull gitlab/gitlab-ce:11.11.8-ce.0
docker pull gitlab/gitlab-ce:11.11.3-ce.0
docker run -itd --detach --hostname 192.168.1.8 -p 80:80 -p 10022:22 -v /data/gitlab/etc:/etc/gitlab -v /data/gitlab/log:/var/log/gitlab -v /data/gitlab/gitlab:/var/opt/gitlab --restart always --privileged=true --name gitlab gitlab/gitlab-ce:16.7.0-ce.0
因为用到的是docker版,逐个运行docker命令即可,配置文件中除了设置external_url外其他的不用动,前提是你原来没有改过任何东西,如果改过unicorn的东西需要把unicorn全部替换成puma,这里的external_url设置了但是每个项目的url不生效,还是用的docker的id,所有需要在docker启动命令中增加--hostname参数
注意: 13升到14的时候,存储需要migrate_to_hashed
1、正常的存储迁移命令:
gitlab-rake gitlab:storage:migrate_to_hashed #执行后如果有类似Enqueuing migration of 41 projects in batches of 200. Done!的提示,则说明有些项目没有迁移成功
2、readonly的项目会导致存储迁移进入background migration状态,需要进入数据库修改项目为非只读模式:
gitlab-psql #进入pg库客户端
update projects set repository_read_only = 'f'; #执行修改sql,将所有项目设置为非只读
3、几个命令:
gitlab-rake gitlab:storage:hashed_projects #查看hash存储项目总数
gitlab-rake gitlab:storage:list_legacy_projects #查看传统存储项目情况
gitlab-rake gitlab:storage:list_legacy_attachments #查看传统存储项目附件
gitlab-rake gitlab:storage:migrate_to_hashed
# 执行成功后,再次执行,会提示如下内容:
#There are no projects requiring storage migration. Nothing to do!
# 全部迁移成功,以下命令查看所列出的项目总数与页面的理应一致
gitlab-rake gitlab:storage:hashed_projects
# 查看,全部迁移成功以下两条命令应该为 0
gitlab-rake gitlab:storage:legacy_projects
gitlab-rake gitlab:storage:legacy_attachments
# 列出传统存储的项目以及附件
gitlab-rake gitlab:storage:list_legacy_projects
gitlab-rake gitlab:storage:list_legacy_attachments
如果传统存储转HASH显示成功,实际没有成功的情况,可以更新下令牌重新转HASH就可以。
具体如下:
#进入数据库终端
gitlab-rails dbconsole
#执行清空命令
UPDATE projects SET runners_token = null, runners_token_encrypted = null;
#退出
exit;
值得注意的是升级过程中,每次运行新版本的容器后需要等,至少10分钟吧,在14版本以后可以在控制中心观察迁移任务,必须等迁移任务全部完成以后再升级下一版本
gitlab-runner升级以及相关问题
在升级到16版本后gitlab-runner版本需要替换为相应的版本,这个过程没有什么特殊的问题,百度直接升即可,但是升级后系统默认自带的git因为版本太低会报错
fatal: git fetch-pack: expected shallow list
11fatal: The remote end hung up unexpectedly
12ERROR: Job failed: exit status 1
但是centos默认的yum里git版本升不到最新需要替换源
yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
yum update git -y
git config --global --add safe.directory "/home/gitlab/abc"
这里的安全目录根据实际情况添加即可,或者路径直接填*