congregate迁移gitlab数据
2024-03-29 21:59 假面Wilson 阅读(314) 评论(0) 编辑 收藏 举报项目地址:https://gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate/
congregate 是一款 gitlab 官方推出的数据迁移工具,可以方便的把其他 SCM 系统的项目迁移到 gitlab 实例
本次测试主要是源gitlab实例迁移到目标gitlab实例。
安装 congregate
docker 安装
# 拉取镜像 docker pull registry.gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate:rolling-debian docker run \ --name congregate \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/hosts:/etc/hosts \ -p 8000:8000 \ -itd 4bd6a78c0a68 \ /bin/bash
- 其中 4bd6a78c0a68 为 registry.gitlab.com/gitlab-org/professional-services-automation/tools/migration/congregate:rolling-debian 镜像 id,使用命令
docker images
获得;也可直接使用镜像名
配置 congregate
# 首先进入容器
docker exec -it congregate /bin/bash
- 如无特殊说明,后面的所有命令操作均在此容器中进行
开始配置
./congregate.sh configure
-
根据提示填写目标实例与源实例地址以及TOKEN信息,然后其他设置无特殊情况按默认即可
-
配置完成后会生成配置文件
./data/congregate.conf
,可手动修改, -
如果执行失败,手动创建
mkdir -p data vi data/congregate.conf
配置信息:
[DESTINATION] dstn_hostname = http://10.10.10.61 dstn_access_token = QnpyOVh6c3M3VVZCdlVBVHpkcWc= import_user_id = 1 shared_runners_enabled = False project_suffix = False max_import_retries = 3 username_suffix = migrated mirror_username = max_asset_expiration_time = 24 [SOURCE] src_type = GitLab src_hostname = http://10.10.10.60 src_access_token = amRTZnhEWHhDR3M2OGhRemY4NWs= src_tier = ultimate export_import_timeout = 3600 [EXPORT] location = filesystem filesystem_path = /opt/congregate [USER] keep_inactive_users = True reset_pwd = False force_rand_pwd = True [APP] export_import_status_check_time = 10 mongo_host = localhost mongo_port = 27017 ui_port = 8000 processes = 4 ssl_verify = True
验证配置
./congregate.sh validate-config
拉取源实例数据
./congregate.sh list
完成后会在 ./data/
目录下生成数据
- groups.json:组数据
- projects.json:项目数据
- users.json:用户数据
ps-user@7f582c3cd44f:/opt/congregate$ ls -l ./data/ total 48 -rw-r--r-- 1 ps-user ps-user 705 May 10 01:48 congregate.conf -rw-r--r-- 1 ps-user ps-user 6303 May 10 01:49 groups.json drwxr-xr-x 1 ps-user ps-user 161 May 10 01:49 logs -rw-r--r-- 1 ps-user ps-user 10525 May 10 01:49 projects.json drwxr-xr-x 2 ps-user ps-user 6 May 2 19:45 reg_tuples drwxr-xr-x 2 ps-user ps-user 6 May 2 19:45 results -rw-r--r-- 1 ps-user ps-user 2 May 10 01:49 staged_groups.json -rw-r--r-- 1 ps-user ps-user 2 May 10 01:49 staged_projects.json -rw-r--r-- 1 ps-user ps-user 2 May 10 01:49 staged_users.json -rw-r--r-- 1 ps-user ps-user 8518 May 10 01:49 users.json
启动图形界面,选择迁移数据
-
./congregate.sh ui
访问地址:http://ip:8000
直接选择所有组,然后点击 stage,程序会自动管理相关账号:
操作完成后,回到容器,使用 ctrl+z 停止 ui 界面,这时候可以看到已经把需要迁移的数据写入到 ./data/staged_ 开头的文件中了:
ps-user@7f582c3cd44f:/opt/congregate$ ls -l ./data/staged* -rw-r--r-- 1 ps-user ps-user 6838 May 10 01:52 ./data/staged_groups.json -rw-r--r-- 1 ps-user ps-user 2885 May 10 01:52 ./data/staged_projects.json -rw-r--r-- 1 ps-user ps-user 6118 May 10 01:55 ./data/staged_users.json
迁移数据
可以使用以下命令一次完成所有组、用户、项目迁移,
./congregate.sh migrate --commit
- 加 --commit 才真正迁移,未加此参数时只会 dry-run
注意:官方不建议这样做,因此这里我们选择以下分步方式完成迁移
迁移用户
./congregate.sh migrate --skip-group-export --skip-group-import --skip-project-export --skip-project-import --commit
迁移组
./congregate.sh migrate --skip-users --skip-project-export --skip-project-import --commit
- 如果加上 --stream-groups 使用新版 migrate_group 功能,迁移数据更全
迁移项目
./congregate.sh migrate --skip-users --skip-group-export --skip-group-import --commit
迁移时间太长不需要一直守着,通过迁移日志./data/logs/congregate.log,可以看到最终的结果