使用文件导出迁移项目

任何私有化部署实例或 SaaS 上的现有项目都可以导出到文件中,然后导入到新的极狐GitLab 实例中。您还可以:

当使用管理员访问令牌执行导入时,极狐GitLab 正确映射用户贡献。

因此,当您将项目从私有化部署实例导入 JihuLab.com 时,使用文件导出迁移项目不会正确映射用户贡献。

相反,所有极狐GitLab 用户关联(例如评论作者)都更改为导入项目的用户。有关详细信息,请参阅以下部分中的先决条件和重要说明:

为了保留贡献历史,使用直接传输进行迁移

如果您从 JihuLab.com 迁移到私有化部署版的极狐GitLab 实例,管理员可以在私有化部署版的极狐GitLab 实例上创建用户。

兼容性

默认情况下,在私有化部署版实例的项目中,文件导出为 NDJSON 格式。要使极狐GitLab 生成 JSON 格式的项目文件导出,请要求管理员禁用功能标志 project_export_as_ndjson。要允许极狐GitLab 以 JSON 格式导入项目文件导出,请要求管理员禁用功能标志 project_import_ndjson。在 JihuLab.com 上,项目文件导出仅采用 NDJSON 格式。

项目文件导出为 NDJSON 格式。在 14.0 版本之前,极狐GitLab 生成 JSON 格式的项目文件导出。 为了支持转换,如果配置相关的功能标志,您仍然可以导入 JSON 格式的项目文件导出。

将文件导出配置为导入源

在私有化部署版实例上使用文件导出迁移项目之前,极狐GitLab 管理员必须:

  1. 在源实例上启用文件导出
  2. 启用文件导出作为目标实例的导入源。在 JihuLab.com 上,文件导出已作为导入源启用。

启用文件导出作为目标实例的导入源:

  1. 在左侧边栏中,选择 搜索或转到
  2. 选择 管理中心
  3. 在左侧边栏中,选择 设置 > 通用
  4. 展开 可见性和访问控制
  5. 滚动到 导入来源
  6. 选择 极狐GitLab 导出

导出项目及其数据

在您可以导入项目之前,您必须将其导出。

先决条件:

  • 查看导出的数据的列表,并非所有数据都导出。
  • 您必须至少具有项目的维护者角色。
  • 用户必须在源实例中设置公开电子邮件,该电子邮件与他们在目标实例中经过验证的电子邮件之一相匹配,用户映射才能正常工作。

要导出项目及其数据,请执行以下步骤:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目。
  2. 在左侧边栏中,选择 设置 > 通用
  3. 展开 高级
  4. 选择 导出项目
  5. 导出生成后,您应该会收到一封电子邮件,其中包含下载文件的链接。
  6. 或者,您可以返回项目设置,并从那里下载文件或生成新的导出。文件可用后,页面显示 下载导出 按钮。

导出是在您配置的 shared_path(一个临时共享目录)中生成的,然后移动到您配置的 uploads_directory。每 24 小时,worker 会删除这些导出文件。

导出的数据

导出以下数据:

  • 项目和 wiki 仓库
  • 项目上传文件
  • 项目配置,不包括集成
  • 议题
    • 议题评论
    • 议题资源状态事件(引入于 15.4 版本)
    • 议题资源里程碑事件(引入于 15.4 版本)
  • 合并请求
    • 合并请求差异
    • 合并请求评论
    • 合并请求资源状态事件(引入于 15.4 版本)
  • 标记
  • 里程碑
  • 代码片段
  • 时间跟踪和其他项目实体
  • 设计管理文件和数据
  • LFS 对象
  • 议题看板
  • 流水线历史
  • 推送规则
  • 群组成员导出为项目成员,只要用户在导出的项目群组中具有维护者或管理员角色,

导出:

  • 子流水线历史
  • 构建跟踪和产物
  • 软件包和容器镜像库镜像
  • CI/CD 变量
  • 流水线触发器
  • Webhook
  • 任何加密令牌
  • 合并请求核准人和所需的批准数量
  • 仓库大小限制
  • 允许推送到受保护分支的部署密钥
  • 安全文件

导入项目及其数据

默认最大导入文件大小从 50 MB 修改为无限制于 13.8 版本。

caution仅从您信任的来源导入项目。如果您从不受信任的来源导入项目,攻击者可能会窃取您的敏感数据。

先决条件:

  • 您必须已导出项目及其数据
  • 比较极狐GitLab 版本,并确保您要导入的极狐GitLab 版本比您导出到的极狐GitLab 版本相同或更高。
  • 查看兼容性是否有任何问题。
  • 至少具有迁移目标群组的维护者角色。对开发者角色的支持废弃于 15.8 版本,并将在 16.0 版本中删除。

导入项目:

  1. 新建项目时,选择 导入项目
  2. 导入项目自 中,选择 GitLab导出
  3. 输入您的项目名称和 URL。然后选择您之前导出的文件。
  4. 选择 导入项目 开始导入。您新导入的项目页面很快就会出现。

导入的数据

以下数据将被导入但略有更改:

  • 具有所有者角色的项目成员作为维护者导入。
  • 如果导入的项目包含源自派生项目的合并请求,则在导入/导出期间,在项目中创建与此类合并请求关联的新分支。因此,导出项目中的分支数量可能比原始项目中的多。
  • 如果使用 Internal 可见性级别受到限制,则所有导入的项目可见性都被指定为 Private

未导入部署密钥。要使用部署密钥,您必须在导入的项目中启用它们并更新受保护的分支。

最大导入文件大小

管理员可以通过管理中心 UI 设置最大导入文件大小。

默认值为 0(无限制)。

映射导入的用户

如果管理员(不是所有者)进行导入,则导入的用户可以通过他们在私有化部署实例上的公共电子邮件地址进行映射。

  • 项目必须由具有所有者角色的项目或群组成员导出。
  • 默认情况下未设置公共电子邮件地址。用户必须在他们的配置文件中设置它,才能使映射正常工作。
  • 为了正确映射贡献,用户必须是命名空间的现有成员,或者可以添加为项目的成员。否则,将留下补充评论来提及原始作者和导入者拥有的 MR、注释或议题。
  • 导入的用户在导入的项目中设置为直接成员

速率限制

为了帮助避免滥用,默认情况下,用户的速率限制为:

请求类型 限制
导出 每分钟 6 个项目
下载导出 每个群组每分钟下载 1 个
导入 每分钟 6 个项目