极狐gitlab数据手动导出导入测试

极狐gitlab数据手动导出导入测试

本文主要测试从源极狐gitlab实例手动迁移数据到目标极狐gitlab实例的可行性。

1. 源极狐gitlab 实例

版本:极狐gitlab v14.10.0

1.1 用户信息

其中 test1 用户属于组 usergroup

1.2 组信息

1.3 组 leffss 信息

1.3.1 组成员信息

包含用户 test2

包含组 usergroup,其中包含用户 test1

1.3.2 子组与项目信息

包含项目 p1、test,子组 testws\test2222

1.3.3 issue 信息

  • issue1 in p1 为 p1 项目,分配给 test1 用户

  • issue2 in test 为 test 项目,分配给 test2 用户

1.3.4 Epics 信息

Epic1 管理 issue1 in p1 和 issue2 in test

1.3.5 Milestone 信息

Milestone1 管理 issue1 in p1

1.4 导出 leffss 组

test2 角色为 owner,故使用 test2 账号导出

组 -- settings -- general -- Advanced -- Export group:

下载导出的组:

1.5 导出 leffss 组下项目

与导出组类似,参考 1.4 章节,使用 test2 账号导出即可

2. 目标极狐gitlab 实例

版本:极狐gitlab v14.10.0

2.1 不创建账号导入

直接使用目标实例 root 管理员账号导入

发现一直转圈,等一会刷新页面即可

然后再将项目导入组 leffss 中,最终发现 issue、epics、milestone 关系都存在,但是 issue 的分配人全部变成 root 管理员了

2.2 创建账号后导入

创建账号 test1 和 test2,以及 usergroup 后,使用 root 账号导入:

导入的组,没有成员信息

然后再使用 root 账号将项目导入组 leffss 中,最终发现 issue、epics、milestone 关系都存在,但是 issue 的分配人全部变成 root 管理员了

虽然有分配记录,但是 issue 还是分配给 root 账号

2.3 创建账号后导入(手动创建成员信息,root 账号导入)

创建账号 test1 和 test2,以及 usergroup 后,使用 root 账号导入:

导入的组,没有成员信息

然后参照源 gitlab 实例手动创建 leffss 组成员信息

然后再使用 root 账号将项目导入组 leffss 中,结果同 2.2 章节

2.4 创建账号后导入(手动创建成员信息,test2 账号导入)

创建账号 test1 和 test2,以及 usergroup 后,使用 root 账号导入:

导入的组,没有成员信息

然后参照源 gitlab 实例手动创建 leffss 组成员信息

然后再使用 test2 账号将项目导入组 leffss 中,结果同 2.2 章节,只是所有 issue 的分配人全部变成 test2 账号了

3. 把账号 public_email 设置为 email 后再导入

源、目标实例 test1 和 test2 都设置 public_email,且都有 test1、test2 账号,以及 usergroup 组(源实例必选设置,目标不需设置,但是还是建议都设置,保持一致)

设置方法:登陆后右上角 - edit profile - Public email

或者

参考API:

情况一:源组的成员包含成员test2和组成员usergroup(包含test1)

结果:使用root账号导入组到目标实例后,无法导入组成员 usergroup,只导入了 test2 成员,然后不做操作,继续使用 root 导入项目,最终结果是只关联了 test2 的issue,但是 test1 账号的 issue 关联的 root 了

情况二:源组的成员包含成员test2和组成员usergroup(包含test1)

结果:使用root账号导入组到目标实例后,无法导入组成员 usergroup,只导入了 test2 成员,然后手动添加组成员usergroup,继续使用 root 导入项目,最终结果还是是只关联了 test2 的issue,但是 test1 账号的 issue 关联的 root 了

情况三:源组的成员包含成员test1,test2,不包含组成员usergroup

结果:使用root账号导入组到目标实例后,正常导入 test1、test2 成员,继续使用 root 导入项目,最终结果 test1 和 test2 的 issue 都正常关联了

情况四:源组的成员包含成员test1,test2,不包含组成员usergroup

结果:使用root账号导入组到目标实例后,正常导入 test1、test2 成员,继续使用 test1 导入项目,最终只有 test1 的 issue 正常关联了,test2 的 issue 关联到 test1 了,原因猜测是导入时需要根据public_email查询账号对应关系,而用户 test1 无此权限

情况五:源组的成员包含成员test1,test2,不包含组成员usergroup

结果:使用root账号导入组到目标实例后,正常导入 test1、test2 成员,继续使用 test2 导入项目,最终只有 test2 的 issue 正常关联了,test1 的 issue 关联到 test2 了,原因同情况四

综上所述:只有情况三能够正常导入组与项目,并且保持 issue 关系不变

2022.5.9测试直接使用新版 Migrate groups 导入测试组下项目如果有单独的成员,也可正常导入,但是还是无法导入组下面的组成员

posted @ 2022-08-31 16:52  leffss  阅读(568)  评论(0编辑  收藏  举报