Gitlab全量迁移

Gitlab全量迁移

一、背景

公司研发使用的Gitlab由于服务器下架需要迁移到新的Gitlab服务器上。Gitlab官方推荐了先备份然后再恢复的方法。个人采用官方的另外一种方法,就写这篇文章给需要的小伙伴参考。

源Gitlab: http://old.mygitlab.com #地址需更换为自己的gitlab地址

目标Gitlab: http://new.mygitlab.com

1.前提条件

(1)Linux主机一台并安装Docker

(2)服务器磁盘需要能够存储源Gitlab的代码,迁移工具会先把代码全部拉到本地,然后再推送到目标Gitlab

① 步骤

  1. root 账号登录Linux服务器,并拉取迁移工具的镜像

    docker pull 镜像

② 依次运行以下命令

复制代码
#获取镜像id
docker images|grep congregate
registry.cn-hangzhou.aliyuncs.com/dockerforkevin/congregate                                  centos-20220312   4bd6a78c0a68   2 months ago   2.3GB
 
#运行容器,并在容器中修改/var/run/docker.sock权限
docker run \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/hosts:/etc/hosts \
-p 8000:8000 \
-it 4bd6a78c0a68
/bin/bash
 
#容器内部命令
[ps-user@a4e8ef2730ed congregate]$sudo chmod 666 /var/run/docker.sock
#按Ctrl+D退出容器
 
#再次启动容器
docker start <container-id>

③ 进入容器中添加配置文件

复制代码
#Linux主机
[root@minikube ~]# docker exec -it <container-id> /bin/bash 
#Docker容器中
[ps-user@a4e8ef2730ed congregate]$ mkdir -p data
[ps-user@a4e8ef2730ed congregate]$vi data/congregate.conf 

congregate.conf文件内容

复制代码
[DESTINATION]
dstn_hostname = http://new.mygitlab.com  #目标Gitlab仓库地址
dstn_access_token = ek04Xy1RbzVpVk5IWnFYYVY3enM= #目标Gitlab管理员Token
import_user_id = 4
shared_runners_enabled = True
project_suffix = False
max_import_retries = 3
username_suffix = gd
mirror_username = 
max_asset_expiration_time = 24
 
[SOURCE]
src_type = GitLab
src_hostname = http://old.mygitlab.com #源Gitlab仓库地址
src_access_token = aW9uQ3B2TlhkWVpwRnNQV2h5SC0= #源Gitlab管理员Token
src_tier = core
export_import_timeout = 300 #这个时间很重要,控制导入和导出的超时时间,如果仓库很大,可以把这个时间调长一点,单位是秒
 
[EXPORT]
location = filesystem
filesystem_path = /opt/congregate
 
[USER]
keep_inactive_users = False
reset_pwd = True
force_rand_pwd = False
 
[APP]
export_import_status_check_time = 10
wave_spreadsheet_path = wave
mongo_host = localhost
mongo_port = 27017
ui_port = 8000
processes = 4

④ 获取源仓库的元数据(MetaData)

复制代码
#获取源仓库的元数据
[ps-user@a4e8ef2730ed congregate]$./congregate.sh list

⑤ 通过UI方式创建需要迁移的对象的列表

复制代码
[ps-user@a4e8ef2730ed congregate]$./congregate.sh ui &

浏览器方式访问本地:8000端口,Projects是Git仓库,全选然后点击"Stage"按钮,切换到Groups(项目组),全选然后点击"Stage",切换到Users(用户),全选然后点击"Stage"

所有的按钮点击完成以后,会在data目录下生成3个json文件

复制代码
[ps-user@a4e8ef2730ed congregate]$ ls -ltr data/staged_*.json
-rw-rw-r-- 1 ps-user ps-user  70439 Mar 12 10:19 data/staged_groups.json
-rw-rw-r-- 1 ps-user ps-user 322311 Mar 12 10:19 data/staged_projects.json
-rw-rw-r-- 1 ps-user ps-user  61408 Mar 12 10:19 data/staged_users.json

⑥ 执行迁移

复制代码
#先迁移Gitlab账户
[ps-user@a4e8ef2730ed congregate]$./congregate.sh migrate --skip-group-export --skip-group-import --skip-project-export --skip-project-import --commit
#再迁移Gitlab项目组
[ps-user@a4e8ef2730ed congregate]$./congregate.sh migrate --skip-users --skip-project-export --skip-project-import --commit
#最后迁移Gitlab仓库(也叫项目),这个比较耗时间,视源仓库代码量的多少
[ps-user@a4e8ef2730ed congregate]$./congregate.sh migrate --skip-users --skip-group-export --skip-group-import --commit

参考博客:

https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/-/blob/master/docs/using-congregate.md#quick-start

相关推荐
我一定会有钱5 天前
打造完美工作流:Git 配置”一次推送,三端同步”(Gitee/GitCode/GitHub)
开发语言·windows·vscode·搜索引擎·gitlab·github·visual studio code
LXY_BUAA5 天前
Git_在飞牛中部署 GitLab_20260817
git·gitlab
Jeanyia8 天前
GitLab 配套 Git 常用命令
git·gitlab
极小狐8 天前
极狐GitLab 补丁版本:19.2.1、19.1.3、19.0.5
网络·安全·gitlab·极狐gitlab·安全更新·补丁版本
rustfs9 天前
GitLab 如何与 RustFS 集成?
分布式·rust·gitlab
郝亚军11 天前
gitlab常用命令
gitlab
xixingzhe214 天前
Java 使用 GitLab4J 实现 WebHook
gitlab
童槿顏丶15 天前
GitLab部署到Linux
linux·运维·gitlab
InfinitePlus16 天前
Gitlab docker版本安装
docker·容器·gitlab
进击切图仔16 天前
GitLab 新用户创建与项目授权操作指南
gitlab