使用极狐GitLab Migration 迁移群组

  • 对群组资源的支持引入于 13.7 版本,功能标志为 bulk_import。默认禁用。
  • 对群组资源的支持在 SaaS 版和私有化部署版上启用于 14.3 版本。
  • 对项目资源的支持引入于 14.4 版本,功能标志为 bulk_import_projects。默认禁用。

在顶级群组中,具有所有者角色的用户可以使用极狐GitLab Migration 将其迁移到:

  • 另一个极狐GitLab 实例。
  • 另一个顶级群组。
  • 任何现有顶级群组的子组。

使用极狐GitLab Migration 迁移群组,与使用文件导出迁移群组不同。 使用文件导出的方法,需要您将群组导出到文件,然后将该文件导入另一个实例。使用极狐GitLab Migration 迁移群组可自动执行此步骤。

将您的群组导入极狐GitLab

迁移群组时,您连接到极狐GitLab 实例,然后选择要导入的群组。并非所有数据都迁移。查看:

note您可能需要重新配置防火墙,以免阻止自助管理实例上的连接。

连接到远端极狐 GitLab 实例

在开始之前,请确保目标极狐GitLab 实例可以通过 HTTPS 与源实例通信(不支持 HTTP)。您可能需要重新配置防火墙,以免阻止自助管理实例上的连接。

然后创建要导入的群组,并连接:

  1. 创建一个新群组或子组:

    • 在顶部栏上,选择 +,然后选择 新建群组
    • 或者,在现有群组页面的右上角,选择 新建子组
  2. 选择 导入群组
  3. 输入极狐GitLab 实例的源 URL。
  4. 在远端极狐GitLab 实例上,生成或复制具有 apiread_repository 范围的个人访问令牌
  5. 输入远端极狐GitLab 实例的个人访问令牌
  6. 选择 连接实例

选择要导入的群组

在您授权访问极狐GitLab 实例后,您将被重定向到 GitLab Group Migration 导入器页面,列出了您拥有所有者角色的远端群组。

  1. 默认情况下,建议的群组命名空间与远端实例中存在的名称匹配,但根据您的权限,您可以选择在继续导入任何名称之前,编辑这些名称。
  2. 在要导入的群组旁边,选择 导入
  3. 状态 列显示每个群组的导入状态。如果您让页面保持打开状态,它会实时更新。
  4. 导入群组后,选择其极狐GitLab 路径,打开其极狐GitLab URL。

Group Importer page

迁移的群组资源

群组的 import_export.yml 文件列出了使用迁移群组时迁移的许多资源。

在您的极狐GitLab 版本的分支中查看此文件,可以查看与您相关的资源列表。

使用文件导出迁移项目,使用与在群组实例级别从模板创建项目相同的导出和导入机制。因此,导出资源的列表是相同的。

迁移到目标实例的资源包括:

  • 徽章(引入于 13.11 版本)
  • 看板列表
  • 看板
  • 史诗(引入于 13.7 版本)
    • 史诗资源状态事件(引入于 15.4 版本)
  • 终结者
  • 群组标记(引入于 13.9 版本)
  • 迭代(引入于 13.10 版本)
  • 迭代周期(引入于 15.4 版本)
  • 成员(引入于 13.9 版本) 在以下情况,群组成员与导入的群组相关联:
    • 用户已存在于目标实例中,并且
    • 用户在源实例中有与目标实例中确认的电子邮件匹配的公开电子邮件
  • 里程碑(引入于 13.10 版本)
  • 命名空间设置
  • 发布
    • 里程碑(引入于 15.0 版本)
  • 子组
  • 上传文件

任何其他资源不会被迁移。

迁移的项目资源

引入于 14.4 版本,功能标志为 bulk_import_projects。默认禁用。

项目的 import_export.yml 文件列出了使用迁移群组时迁移的许多资源。

在您的极狐GitLab 版本的分支中查看此文件,可以查看与您相关的资源列表。

  • 项目(引入于 14.4 版本)
    • Auto DevOps(引入于 14.6 版本)
    • 分支(包括受保护的分支)(引入于 14.7 版本)
    • CI 流水线(引入于 14.6 版本)
    • 设计(引入于 15.1 版本)
    • 议题(引入于 14.4 版本)
      • 议题迭代(引入于 15.4 版本)
      • 议题资源状态事件(引入于 15.4 版本)
      • 议题资源里程碑事件(引入于 15.4 版本)
      • 议题资源迭代事件(引入于 15.4 版本)
      • 议题 URL 引用地址(引入于 15.6 版本)
    • 标记(引入于 14.4 版本)
    • LFS 对象(引入于 14.8 版本)
    • 成员(引入于 14.8 版本)
    • 合并请求(引入于 14.5 版本)
      • 多个合并请求指派人(引入于 15.3 版本)
      • 合并请求审核者(引入于 15.3 版本)
      • 合并请求核准人(引入于 15.3 版本)
      • 合并请求资源状态事件(引入于 15.4 版本)
      • 合并请求资源里程碑事件(引入于 15.4 版本)
      • 合并请求 URL 引用地址(引入于 15.6 版本)
    • 迁移推送规则(引入于 14.6 版本)
    • 拉取请求(包括外部拉取请求)(引入于 14.5 版本)
    • 流水线历史(引入于 14.6 版本)
    • 流水线计划(引入于 14.8 版本)
    • 发布(引入于 15.1 版本)
    • 发布 Evidences(引入于 15.1 版本)
    • 仓库(引入于 14.4 版本)
    • 代码片段(引入于 14.6 版本)
    • 上传文件(引入于 14.5 版本)
    • Wikis(引入于 14.6 版本)

群组迁移故障排查

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 小时。在这种情况下,BulkImportBulkImport::Entitystatus3timeout):

# Get relevant import records
import = BulkImports::Entity.where(namespace_id: Group.id).map(&:bulk_import)

import.status #=> 3 means that the import timed out.

错误: 404 Group Not Found

如果您尝试导入路径仅由数字组成的群组(例如,5000),极狐GitLab 会尝试通过 ID 而不是路径来查找群组。这会导致 404 Group Not Found 错误。要解决此问题,必须使用以下方法更改源组路径以包含非数字字符:

  1. 在顶部栏上,选择 菜单 > 群组 并找到您的组。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 高级
  4. 更改群组 URL 下,更改群组 URL 以包含非数字字符。