之前写了gitlab的安装文档,目的是为了为迁移做准备,现在记录一下测试迁移的过程。现在需要将编译安装的7.13.4
版本的gitlab升级至10.6.0
并采用docker的方式运行。经查阅官方Docker【版本】是9.5.1-10.7.0
。而在Github上【sameersbn版本】是v6.1-v10.6.4
。另外
还有Gitlab的【官方升级说明】,这个说明里面都是临近的版本升级说明,但并没有介绍大跨度升级的详细内容。最后决定采用github上提供的升级建议。记录说明如下
迁移升级步骤
**概览:**从7.13.4–>8.0.3–>10.6.0
A. 先迁移至同版本的Docker容器中
B. 利用Docker易于部署的特性将Gitlab升级至指定版本
C. 使用了【sameersbn提供的方法】
1
2
3
4
5
|
docker pull sameersbn/gitlab:7.13.4
#docker pull sameersbn/gitlab:latest
cd docker-gitlab #获取对应版本docker compose配置
git clone https://github.com/sameersbn/docker-gitlab.git
#docker build --tag=$USER/gitlab .
|
1
2
3
4
|
pip install docker-compose
#进入docker compose同级目录执行up命令
docker-compose up -d
#docker-compose down
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
docker ps -a
cp /gitlab_bak/1523732410_gitlab_backup.tar /srv/docker/gitlab/gitlab/backups/ #copy 备份数据到docker里backup目录
docker exec -it docker-gitlab_gitlab_1 /bin/bash #进入容器
#容器内部使用了supervisor 先停止gitlab服务
supervisor> stop sidekiq
sidekiq: stopped
supervisor> stop unicorn
unicorn: stopped
#修改权限
chown -R git.git /home/git/
chown -R git.git /home/git/data/backups/1525501269_gitlab_backup.tar
chown -R git.git /var/log/gitlab/gitlab-shell/gitlab-shell.log
su git
#
bundle exec rake gitlab:check SANITIZE=true #确认状态无误,导入需确认API和Running状态为关闭
bundle exec rake gitlab:backup:restore RAILS_ENV=production #还原操作
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#每次升级之后做一下备份
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
#使用compose更新版本
git branch
git checkout .
git clean -df
git checkout v8.0.3
mv docker-compose.yml.dist docker-compose.yml
docker-compose up -d
#backup again
docker-compose down
git checkout 10.6.0
docker-compose up -d
|
特别说明
我这里最后并没有升级至10.6.0,最后决定使用原版本只是迁移到docker有两点需要注意
- 1.数据目录权限如果这个有问题会出现能看到repository的commit等信息,却提示repository不存在
1
2
|
#更改repository所在目录的权限即可
chown -R git.git /home/git/data/repositories
|
- 2.迁移key,将原gitlab的auth key迁移到新gitlab的auth key位置,注意command
1
2
3
4
5
|
#提示:可以先手动创建一个就知道该如何写这个command了
原key:/var/opt/gitlab/.ssh/authorized_keys
command="/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell key-58",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa A6dKlEgfVl3G16f5v test@bogon
现key:/home/git/data/.ssh/authorized_keys
command="/home/git/gitlab-shell/bin/gitlab-shell key-59",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa A6dKlEgfVl3G16f5v test@bogon
|
官方建议
官方提供了3种Gitlab的安装方法,根据安装方法的不同需要选取不同的迁移升级策略。三种安装方式分别如下*【除了源码安装其他的安装方法在我之前的一篇博客里已经记录了】*
- Omnibus Packages
- Source installation
- Docker installation
关于如何还原备份【文档地址】
主要参照官方吧,我这里不再详细说了。简单记录一点我看到的
从9.1.0版本开始满足以下条件可以实现升级到新版本而不必停止Gitlab服务
- 只能一次升级一个小版本,如:9.1到9.2,不能9.1到9.3
从9.2.开始备份文件的时间戳发生了变化
In GitLab 9.2 the timestamp format was changed from EPOCH_YYYY_MM_DD to EPOCH_YYYY_MM_DD_GitLab version, for example 1493107454_2017_04_25 would become 1493107454_2017_04_25_9.1.0
其他意见
- 采用Omnibus Packages时【文档】
- 采用Source installation时【文档】
故障排除