从其它实例迁移群组
- 引入于 13.7 版本。
- 部署于功能标记之后,默认禁用。
在自助管理实例上,此功能默认启用。要隐藏此功能,询问管理员禁用名为
bulk_import
的功能标志。您可以将现有的顶级群组迁移到以下任何一个:
- 另一个极狐GitLab 实例。
- 另一个顶级群组。
- 任何现有顶级群组的子组。
迁移群组与群组导入/导出不同:
- 群组导入/导出要求您将群组导出到文件,然后将该文件导入另一个极狐GitLab 实例。
- 群组迁移使此过程自动化。
将您的群组导入极狐GitLab
迁移群组时,您连接到极狐GitLab 实例,然后选择要导入的群组。并非所有数据都迁移,查看迁移的资源列表,获取详细信息。
您可能需要重新配置防火墙,以免阻止自助管理实例上的连接。
连接到远端极狐 GitLab 实例
在开始之前,请确保目标极狐GitLab 实例可以通过 HTTPS 与源实例通信(不支持 HTTP)。您可能需要重新配置防火墙,以免阻止自助管理实例上的连接。
然后创建要导入的群组,并连接:
-
创建一个新群组或子组:
- 在顶部栏上,选择
+
,然后选择 新建群组。 - 或者,在现有群组页面的右上角,选择 新建子组。
- 在顶部栏上,选择
- 选择 导入群组。
- 输入极狐GitLab 实例的源 URL。
- 在远端极狐GitLab 实例上,生成或复制具有
api
和read_repository
范围的个人访问令牌。 - 输入远端极狐GitLab 实例的个人访问令牌。
- 选择 连接实例。
选择要导入的群组
在您授权访问极狐GitLab 实例后,您将被重定向到 GitLab Group Migration 导入器页面,列出了您拥有所有者角色的远端群组。
- 默认情况下,建议的群组命名空间与远端实例中存在的名称匹配,但根据您的权限,您可以选择在继续导入任何名称之前,编辑这些名称。
- 在要导入的群组旁边,选择 导入。
- 状态 列显示每个群组的导入状态。如果您让页面保持打开状态,它会实时更新。
- 导入群组后,选择其极狐GitLab 路径,打开其极狐GitLab URL。
迁移的资源
仅将以下资源迁移到目标实例。任何其它项目都不迁移:
- 群组(引入于 13.7)
- 描述
- 属性
- 子组
- 头像(引入于 14.0)
- 群组标记(引入于 13.9)
- 标题
- 描述
- 颜色
- 创建时间(引入于 13.10)
- 更新时间(引入于 13.10)
- 成员(引入于 13.9)
在以下情况下,群组成员与导入的群组相关联:
- 该用户已经存在于目标实例中并且
- 用户在源实例中拥有与目标实例中确认的电子邮件,匹配的公共电子邮件
- 史诗(引入于 13.7)
- 标题
- 描述
- 状态(开放/已关闭)
- 开始日期
- 截止日期
- 看板上的史诗顺序
- 机密性
- 标记(引入于 13.9)
- 作者(引入于 13.9)
- 父史诗(引入于 13.9)
- 使用 emoji(引入于 13.9)
- 事件(引入于 13.10)
- 里程碑(引入于 13.10)
- 标题
- 描述
- 状态(启用/已关闭)(active / closed)
- 开始日期
- 截止日期
- 创建时间
- 更新时间
- iid(引入于 13.11)
- 迭代(引入于 13.10)
- iid
- 标题
- 描述
- 状态 (即将到来 / 已开始 / 已结束)
- 开始日期
- 截止日期
- 创建时间
- 更新时间
- 徽章(引入于 13.11)
- 名称
- 链接 URL
- 图片 URL
- 看板
- 看板列表
- 发布
- 里程碑(引入于 15.0)
群组迁移故障排查
在 rails 控制台会话中,您可以使用以下命令查找群组导入尝试的失败或错误消息:
# Get relevant import records
import = BulkImports::Entity.where(namespace_id: Group.id).map(&:bulk_import)
# Alternative lookup by user
import = BulkImport.where(user_id: User.find(...)).last
# Get list of import entities. Each entity represents either a group or a project
entities = import.entities
# Get a list of entity failures
entities.map(&:failures).flatten
# Alternative failure lookup by status
entities.where(status: [-1]).pluck(:destination_name, :destination_namespace, :status)
过时的导入
引入于 14.10 版本
在对群组迁移进行故障排除时,导入可能无法完成,因为导入 workers 的执行时间超过 8 小时。在这种情况下,BulkImport
或 BulkImport::Entity
的 status
为 3
(timeout
):
# Get relevant import records
import = BulkImports::Entity.where(namespace_id: Group.id).map(&:bulk_import)
import.status #=> 3 means that the import timed out.