Skip to main content

将组织从 GitHub.com 迁移到 GitHub Enterprise Cloud

可以使用 GitHub CLI 或 GraphQL API 将组织从 GitHub.com 迁移到 GitHub Enterprise Cloud。

Tool navigation

关于使用 GitHub Enterprise Importer

迁移组织

迁移到 GitHub Enterprise Cloud 包括 GitHub.com 上的帐户之间的迁移,以及迁移到企业的子域 GHE.com(如果要采用 数据驻留)。

可以使用 GitHub CLI 或 API 运行迁移。

GitHub CLI 可简化迁移过程,建议大多数客户使用。 具有大量自定义需求的高级客户可以使用 API 构建自己的与 GitHub Enterprise Importer 的集成。

若要查看使用 GitHub CLI 的说明,请使用页面顶部的工具切换器。

先决条件

  • 强烈建议执行迁移的试运行,然后在不久之后完成生产迁移。 若要了解试运行的详细信息,请参阅“在 GitHub 产品之间迁移的概述”。
  • 确保了解将要迁移的数据以及导入程序已知的支持限制。 有关详细信息,请参阅“关于 GitHub 产品之间的迁移”。
  • 虽然并非必需,但建议在生产迁移期间停止工作。 Importer 不支持增量迁移,因此迁移期间发生的任何更改都不会迁移。 如果选择在生产迁移期间不停止工作,需要手动迁移这些更改。
  • 对于源组织,你必须是组织所有者或具有迁移者角色。 有关详细信息,请参阅“管理 GitHub 产品之间迁移的访问权限”。
  • 对于目标企业帐户,你必须是企业所有者。

步骤 0:准备好使用 GitHub GraphQL API

要进行 GraphQL 查询,需要编写自己的脚本或使用 HTTP 客户端(如 Insomnia)。

若要详细了解 GitHub GraphQL API 入门(包括如何进行身份验证),请参阅“使用 GraphQL 建立调用”。

将所有 GraphQL 查询发送到迁移目标。**** 如果要迁移到 具有数据驻留的 GitHub Enterprise Cloud,请确保将查询发送到 GHE.com 的企业子域的终结点。

步骤 1:获取迁移目标的企业 ID

作为 GitHub.com 中的企业所有者,使用以下查询返回要拥有已迁移组织的企业帐户的 ID。 需要企业 ID 来识别迁移目标。

query(
  $slug: String!
){
  enterprise (slug: $slug)
  {
    slug
    id
  }
}
查询变量说明
slug企业帐户的数据域,可以通过查看企业的 URL(https://github.com/enterprises/SLUGhttps://SLUG.ghe.com)来识别。

步骤 2:开始组织迁移

开始迁移时,单个组织及其随附的数据将迁移到你识别的目标企业中的全新组织。

mutation startOrganizationMigration (
  $sourceOrgUrl: URI!,
  $targetOrgName: String!,
  $targetEnterpriseId: ID!,
  $sourceAccessToken: String!,
    $targetAccessToken: String!
){
  startOrganizationMigration( input: {
    sourceOrgUrl: $sourceOrgUrl,
    targetOrgName: $targetOrgName,
    targetEnterpriseId: $targetEnterpriseId,
    sourceAccessToken: $sourceAccessToken,
        targetAccessToken: $targetAccessToken
  }) {
    orgMigration {
      id
    }
  }
}
查询变量说明
sourceOrgUrl源组织的 URL,例如 https://github.com/octo-org
targetOrgName希望新组织具有的名称。 不能由目标平台上的另一个组织进行共享。
targetEnterpriseId要在其中创建新组织的企业的 ID,由步骤 2 返回。
sourceAccessToken源组织的 personal access token (classic)。 有关要求,请参阅“管理 GitHub 产品之间迁移的访问权限”。
targetAccessToken目标企业的 personal access token (classic)。

在下一步中,将使用从 startOrganizationMigration 突变返回的迁移 ID 来检查迁移状态。

步骤 3:检查迁移状态

若要检测任何迁移失败并确保迁移正常工作,可以使用 getMigration 查询查询已创建的 OrganizationMigration 以查看迁移状态。

查询将返回状态,告知迁移是 queuedin progressfailed 还是 completed,以及有关等待迁移的存储库数量的信息。 如果迁移失败,Importer 将提供失败原因。

query (
  $id: ID!
){
  node( id: $id ) {
    ... on OrganizationMigration {
      id
            sourceOrgUrl
            targetOrgName
      state
      failure_reason
      remaining_repositories_count
      total_repositories_count
    }
  }
}
查询变量说明
id迁移的 id

迁移完成后,建议检查迁移日志存储库。 有关详细信息,请参阅“访问 GitHub Enterprise Importer 的迁移日志”。

最后,建议对组织和迁移的存储库执行健全性检查。