Skip to main content

Перенос репозиториев из Enterprise Server в Enterprise Cloud

Tool navigation

Если вы решили использовать API, вам потребуется написать собственные скрипты или использовать HTTP-клиент, такой как бессонница. Дополнительные сведения о начале работы с api в [AUTOTITLE и Начало работы с REST API](/graphql/guides/forming-calls-with-graphql).

Чтобы перенести репозитории из Enterprise Server на Enterprise Cloud с помощью API, выполните следующие действия:

  1. Создание personal access token для исходной и целевой организации
  2. ownerId Получение целевой организации на Enterprise Cloud
  3. Настройка источника миграции с помощью API GraphQL , чтобы определить, откуда выполняется миграция
  4. Для каждого репозитория, который требуется перенести, повторите эти действия.
    • Использование REST API в экземпляр Enterprise Server для создания архивов миграции для репозитория
    • Отправка архивов миграции в расположение, к которым можно получить доступ с помощью
    • Запустите миграцию с помощью API GraphQL для назначения миграции, передавая URL-адреса архива
    • Проверьте состояние миграции с помощью API GraphQL
    • Проверка миграции и проверка журнала ошибок

Чтобы просмотреть инструкции по использованию API, используйте переключатель инструментов в верхней части страницы.

Чтобы просмотреть инструкции по использованию CLI, используйте переключатель инструментов в верхней части страницы.

  • Настоятельно рекомендуется выполнить пробную версию миграции и завершить рабочую миграцию в ближайшее время. Дополнительные сведения о пробных запусках см. в разделе Обзор миграции между продуктами .
  • Убедитесь, что вы понимаете данные, которые будут перенесены, и известные ограничения поддержки импорта. Дополнительные сведения см. в разделе Сведения о миграции между продуктами .
  • Хотя и не требуется, рекомендуется остановить работу во время рабочей миграции. Importer не поддерживает разностную миграцию, поэтому любые изменения, которые происходят во время миграции, не будут переноситься. Если вы решили не останавливать работу во время рабочей миграции, необходимо вручную перенести эти изменения.
  • В исходных и конечных организациях необходимо либо владелец организации, либо предоставить роль миграции. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами .
  • Если вы используете Enterprise Server 3.8 или более поздней версии, чтобы настроить хранилище BLOB-объектов для экспортированных архивов, вам потребуется доступ к Консоль управления.

  1. Создайте и запишите personal access token (classic), которая будет проходить проверку подлинности для целевой организации на Enterprise Cloud, убедившись, что маркер соответствует всем требованиям. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами .
  2. Создайте и запишите personal access token, которая будет проходить проверку подлинности для исходной организации, убедившись, что этот маркер также соответствует всем одинаковым требованиям.

В качестве владелец организации в Enterprise Cloudиспользуйте GetOrgInfo запрос для возврата ownerIdидентификатора организации, которая также называется идентификатором организации, для которой требуется принадлежать перенесенные репозитории. Вам потребуется ownerId определить назначение миграции.

query(
  $login: String!
){
  organization (login: $login)
  {
    login
    id
    name
    databaseId
  }
}
Переменная запросаDescription
loginИмя вашей организации.

{
  "data": {
    "organization": {
      "login": "Octo",
      "id": "MDEyOk9yZ2FuaXphdGlvbjU2MTA=",
      "name": "Octo-org",
      "databaseId": 5610
    }
  }
}

В этом примере MDEyOk9yZ2FuaXphdGlvbjU2MTA= — это идентификатор организации или ownerIdидентификатор организации, который мы будем использовать на следующем шаге.

Так как многие экземпляры Enterprise Server сидят за брандмауэрами, для Enterprise Server версий 3.8 или более поздних версий мы используем хранилище BLOB-объектов в качестве промежуточного расположения для хранения данных, к которым могут получить доступ .

Сначала необходимо настроить хранилище BLOB-объектов с помощью поддерживаемого поставщика облачных служб, а затем настроить параметры в Консоль управления экземпляр Enterprise Server.

Примечание.

Необходимо настроить только хранилище BLOB-объектов, если используется Enterprise Server версии 3.8 или более поздней. Если вы используете Enterprise Server версии 3.7 или более поздней, перейдите к шагу 4. Настройка источника миграции в Enterprise Cloud.

Хранилище BLOB-объектов требуется для переноса репозиториев с большим источником или метаданными Git. Если вы используете Enterprise Server версии 3.7 или более поздней, вы не сможете выполнять миграцию, в которой экспорт метаданных или источника Git превышает 2 ГБ. Чтобы выполнить эти миграции, обновите до Enterprise Server версии 3.8 или более поздней.

CLI поддерживает следующие поставщики хранилища BLOB-объектов:

  • Amazon Web Services (AWS) S3
  • хранилище BLOB-объектов Azure

В AWS настройте контейнер S3. Дополнительные сведения см. в разделе "Создание контейнера " в документации ПО AWS.

Вам также потребуется ключ доступа AWS и секретный ключ со следующими разрешениями:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::-migration-bucket",
                "arn:aws:s3:::-migration-bucket/*"
            ]
        }
    ]
}

Примечание.

Enterprise Importer не удаляет архив из AWS после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в разделе Настройка конфигурации жизненного цикла в контейнере в документации AWS.

В Azure создайте учетную запись хранения и запишите строка подключения. Дополнительные сведения см. в разделе "Управление ключами доступа к учетной записи хранения" в Документация Майкрософт.

Примечание.

Enterprise Importer не удаляет архив из Хранилище BLOB-объектов Azure после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в статье "Оптимизация затрат путем автоматического управления жизненным циклом данных в Документация Майкрософт".

После настройки контейнера хранилища AWS S3 или учетной записи хранения Хранилище BLOB-объектов Azure настройте хранилище BLOB-объектов в Консоль управления экземпляр Enterprise Server. Дополнительные сведения о Консоль управлениясм. в статье администрирование экземпляра из консоли управления.

  1. В учетной записи администратора Enterprise Server, в правом верхнем углу любой страницы щелкните .

  2. Если вы еще не на странице "Администратор сайта" в левом верхнем углу щелкните "Администратор сайта". 1. На боковой панели " "Администратор сайта" щелкните Консоль управления.

  3. Войдите в Консоль управления.

  4. В верхней панели навигации** щелкните **"Параметры".

  5. В разделе "Миграции" нажмите кнопку "Включить" Миграции.

  6. При необходимости для импорта параметров хранилища, настроенных для Actions, выберите "Копировать параметры хранилища" из действий. Дополнительные сведения см. в статье "Включение действий с хранилищем BLOB-объектов Azure" и включение Actions с помощью хранилища Amazon S3.

    Примечание.

    После копирования параметров хранилища может потребоваться обновить конфигурацию облачной учетной записи хранения, чтобы работать с Enterprise Importer. В частности, необходимо убедиться, что разрешены IP-адреса . Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами .

  7. Если параметры хранилища не импортируются из Actions, выберите Хранилище BLOB-объектов Azure или Amazon S3 и заполните необходимые сведения.

    Примечание.

    Если вы используете Amazon S3, необходимо задать URL-адрес службы AWS для стандартной конечной точки региона AWS, в котором находится контейнер. Например, если контейнер находится в регионе eu-west-1 , будет указан https://s3.eu-west-1.amazonaws.comURL-адрес службы AWS. Сеть экземпляра Enterprise Server должна разрешить доступ к этому узлу. Конечные точки шлюза не поддерживаются, например bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com. Дополнительные сведения о конечных точках шлюза см. в разделе "Конечные точки шлюза" для Amazon S3 в документации AWS.

  8. Щелкните " Тестировать параметры хранилища".

  9. Нажмите кнопку Сохранить параметры.

Если вы настроили правила брандмауэра в учетной записи хранения, убедитесь, что у вас есть доступ к диапазонам IP-адресов для назначения миграции. См . раздел AUTOTITLE.

Вы можете настроить источник миграции с помощью createMigrationSource запроса. Вам потребуется указать ownerIdидентификатор организации, собранный GetOrgInfo из запроса.

Источник миграции — это ваша организация на Enterprise Server.

mutation createMigrationSource($name: String!, $url: String!, $ownerId: ID!) {
  createMigrationSource(input: {name: $name, url: $url, ownerId: $ownerId, type: _ARCHIVE}) {
    migrationSource {
      id
      name
      url
      type
    }
  }
}

Примечание.

Обязательно используйте _ARCHIVE для type.

Переменная запросаDescription
nameИмя источника миграции. Это имя для собственной ссылки, поэтому можно использовать любую строку.
ownerIdИдентификатор организации в Enterprise Cloud.
urlURL-адрес для экземпляр Enterprise Server. Этот URL-адрес не должен быть доступен из Enterprise Cloud.

{
  "data": {
    "createMigrationSource": {
      "migrationSource": {
        "id": "MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ",
        "name": "GHES Source",
        "url": "https://my-ghes-hostname.com",
        "type": "_ARCHIVE"
      }
    }
  }
}

В этом примере MS_kgDaACRjZTY5NGQ1OC1mNDkyLTQ2NjgtOGE1NS00MGUxYTdlZmQwNWQ — это идентификатор источника миграции, который мы будем использовать на следующем шаге.

Rest API будет использоваться для запуска двух "миграций" в Enterprise Server: один для создания архива источника Git репозитория и одного для создания архива метаданных репозитория (например, проблем и запросов на вытягивание).

Чтобы создать исходный архив Git, выполните POST запрос https://HOSTNAME/api/v3/orgs/ORGANIZATION/migrations, заменив HOSTNAME имя узла экземпляр Enterprise Server, а также ORGANIZATION имя входа вашей организации.

В тексте укажите один репозиторий, который требуется перенести. Запрос будет выглядеть примерно так:

POST /api/v3/orgs/acme-corp/migrations HTTP/1.1
Accept: application/vnd.+json
Authorization: Bearer <TOKEN>
Content-Type: application/json
Host: .acmecorp.net

{
  "repositories": ["repository_to_migrate"],
  "exclude_metadata": true
}

Чтобы создать архив метаданных, отправьте аналогичный запрос на тот же URL-адрес со следующим текстом:

{
  "repositories": ["repository_to_migrate"],
  "exclude_git_data": true,
  "exclude_releases": false,
  "exclude_owner_projects": true
}

Каждый из этих двух вызовов API возвращает ответ JSON, включая идентификатор запущенной миграции.

HTTP/1.1 201 Created

{
  "id": 123,
  // ...
}

Дополнительные сведения см. в разделе "Запуск миграции организации".

Создание архивов может занять некоторое время в зависимости от объема данных. Вы можете регулярно проверять состояние двух миграций с помощью API "Получить состояние миграции организации" до тех пор, пока state миграция не изменится exported.

GET /api/v3/orgs/acme-corp/migrations/123 HTTP/1.1
Accept: application/vnd.+json
Authorization: Bearer <TOKEN>
Host: .acmecorp.net

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "state": "exported",
  // ...
}

Дополнительные сведения см. в разделе "Получение состояния миграции организации".

Примечание.

Если миграция перемещается в failed состояние, а не exported состояние, попробуйте снова начать миграцию. Если миграция завершается сбоем, рекомендуется создать архивы, используя ghe-migrator вместо API.

Выполните действия, описанные в разделе "Экспорт данных миграции из предприятия", добавив в миграцию только один репозиторий. В конце процесса у вас будет один архив миграции с источником и метаданными Git, и вы можете перейти к шагу 6 в этой статье.

state После перехода exportedна миграцию можно получить URL-адрес миграции с помощью API загрузки архива миграции организации.

GET /api/v3/orgs/acme-corp/migrations/123/archive HTTP/1.1
Accept: application/vnd.+json
Authorization: Bearer <TOKEN>
Host: .acmecorp.net

HTTP/1.1 302 Found
Location: https://media..acmecorp.net/migrations/123/archive/cca2ebe9-7403-4ffa-9b6a-4c9e16c94410?token=AAAAABEWE7JP4H2HACKEGMTDOYRC6

API вернет 302 Found ответ с заголовком Location , перенаправляющимся на URL-адрес, в котором находится скачиваемый архив. Скачайте два файла: один для источника Git и один для метаданных.

Дополнительные сведения см. в разделе "Скачивание архива миграции организации".

После завершения обоих миграций и скачивания архивов можно перейти к следующему шагу.

Чтобы импортировать данные в Enterprise Cloud, необходимо передать оба архива для каждого репозитория (источник Git и метаданные) с компьютера в , используя наш API GraphQL.

Если вы используете Enterprise Server 3.7 или более поздней версии, необходимо сначала создать URL-адреса для архивов, доступных . Большинство клиентов предпочитают отправлять архивы в службу хранилища BLOB-объектов поставщика облачных служб, например Amazon S3 или Хранилище BLOB-объектов Azure, а затем создать короткий URL-адрес для каждого.

Если вы используете Enterprise Server 3.8 или более поздней версии, экземпляр отправляет архивы и создает URL-адреса для вас. Заголовок Location на предыдущем шаге возвращает короткий URL-адрес.

Возможно, вам потребуется разрешить список данных . Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами .

При запуске миграции один репозиторий и его сопутствующие данные переносятся в новый репозиторий , который вы определяете.

Если вы хотите одновременно переместить несколько репозиториев из одной исходной организации, можно ставить в очередь несколько миграций. Одновременно можно выполнять до 5 миграций репозитория.

mutation startRepositoryMigration (
  $sourceId: ID!,
  $ownerId: ID!,
  $repositoryName: String!,
  $continueOnError: Boolean!,
  $accessToken: String!,
  $Pat: String!,
  $gitArchiveUrl: String!,
  $metadataArchiveUrl: String!,
  $sourceRepositoryUrl: URI!,
  $targetRepoVisibility: String!
){
  startRepositoryMigration( input: {
    sourceId: $sourceId,
    ownerId: $ownerId,
    repositoryName: $repositoryName,
    continueOnError: $continueOnError,
    accessToken: $accessToken,
    Pat: $Pat,
    targetRepoVisibility: $targetRepoVisibility
    gitArchiveUrl: $gitArchiveUrl,
    metadataArchiveUrl: $metadataArchiveUrl,
    sourceRepositoryUrl: $sourceRepositoryUrl,
  }) {
    repositoryMigration {
      id
      migrationSource {
        id
        name
        type
      }
      sourceUrl
    }
  }
}
Переменная запросаDescription
sourceIdИсточник миграции id вернулся из мутации createMigrationSource .
ownerIdИдентификатор организации в Enterprise Cloud.
repositoryNameПользовательское уникальное имя репозитория, которое в настоящее время не используется ни одной из репозиториев, принадлежащих организации, на Enterprise Cloud. Проблема с ведением журнала ошибок будет создана в этом репозитории при завершении или остановке миграции.
continueOnErrorПараметр миграции, позволяющий продолжить миграцию при возникновении ошибок, которые не вызывают сбой миграции. Должно быть true или false. Настоятельно рекомендуется задать значение continueOnError true , чтобы миграция продолжалась, если только Importer не может переместить источник Git или Importer потерял соединение и не сможет повторно подключиться к миграции.
Patpersonal access token для целевой организации на Enterprise Cloud.
accessTokenpersonal access token для источника.
targetRepoVisibilityВидимость нового репозитория. Должно быть private, public или internal. Если этот параметр не задан, репозиторий переносится как закрытый.
gitArchiveUrlURL-адрес для исходного архива Git { % variables.product.prodname_ghe_cloud %}.
metadataArchiveUrlURL-адрес ,доступный для архива метаданных Enterprise Cloud.
sourceRepositoryUrlURL-адрес репозитория в экземпляре Enterprise Server. Это необходимо, но Enterprise Cloud не будет напрямую взаимодействовать с экземпляром Enterprise Server.

Требования к personal access token см. в разделе Управление доступом к миграции между продуктами .

На следующем шаге вы будете использовать идентификатор миграции, возвращенный из startRepositoryMigration изменения, чтобы проверить состояние миграции.

Чтобы обнаружить любые сбои миграции и убедиться, что миграция работает, можно проверить состояние миграции с помощью getMigration запроса. Вы также можете проверить состояние нескольких миграций.getMigrations

Запрос getMigration возвращается с состоянием, чтобы сообщить, является queuedли миграция , in progress``failedили completed. Если миграция завершилась сбоем, Importer предоставит причину сбоя.

query (
  $id: ID!
){
  node( id: $id ) {
    ... on Migration {
      id
      sourceUrl
      migrationSource {
        name
      }
      state
      failureReason
    }
  }
}
Переменная запросаDescription
idМиграцияid, возвращаемая мутациейstartRepositoryMigration.

Чтобы завершить миграцию, рекомендуется проверить проблему журнала миграции. Эта проблема создается на в целевом репозитории.

Снимок экрана: проблема с заголовком "Журнал миграции". Второй комментарий в этой проблеме включает журналы для миграции.

Наконец, рекомендуется просмотреть перенесенные репозитории для проверки звука.

Если это первая миграция, необходимо установить GEI extension of the CLI. Дополнительные сведения о CLIсм. в разделе Сведения о CLI.

Кроме того, можно скачать автономный двоичный файл на странице выпусков для /gh-gei репозитория. Двоичный файл можно запускать напрямую без gh префикса.

  1. Установите CLI. Инструкции по установке для CLI см. в репозитории CLI.

    Примечание.

    Вам нужна версия 2.4.0 или более позднюю версию CLI. Вы можете проверить версию, установленную gh --version с помощью команды.

  2. Установите GEI extension.

    Shell
    gh extension install /gh-gei
    

В любое время, когда вам нужна помощь с GEI extension, можно использовать --help флаг с помощью команды. Например, gh gei --help перечислит все доступные команды и gh gei migrate-repo --help отобразит список всех параметров, доступных для migrate-repo команды.

Данные GEI extension обновляются еженедельно. Чтобы убедиться, что вы используете последнюю версию, обновите расширение.

gh extension upgrade /gh-gei

Прежде чем использовать GEI extension для миграции на Enterprise Cloud, необходимо создать personal access tokens, которые могут получить доступ к исходным и целевым организациям, а затем задать personal access tokens в качестве переменных среды.

  1. Создайте и запишите personal access token (classic), которая будет проходить проверку подлинности для целевой организации на Enterprise Cloud, убедившись, что маркер соответствует всем требованиям. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами .
  2. Создайте и запишите personal access token, которая будет проходить проверку подлинности для исходной организации, убедившись, что этот маркер также соответствует всем одинаковым требованиям.

Так как многие экземпляры данных Enterprise Server сидят за брандмауэрами, мы используем хранилище BLOB-объектов в качестве промежуточного расположения для хранения данных, к которым могут получить доступ .

Сначала необходимо настроить хранилище BLOB-объектов с помощью поддерживаемого поставщика облачных служб. Затем необходимо настроить учетные данные для поставщика хранилища в Консоль управления или CLI.

CLI поддерживает следующие поставщики хранилища BLOB-объектов:

  • Amazon Web Services (AWS) S3
  • хранилище BLOB-объектов Azure

В AWS настройте контейнер S3. Дополнительные сведения см. в разделе "Создание контейнера " в документации ПО AWS.

Вам также потребуется ключ доступа AWS и секретный ключ со следующими разрешениями:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:ListBucketMultipartUploads",
                "s3:AbortMultipartUpload",
                "s3:ListBucket",
                "s3:DeleteObject",
                "s3:ListMultipartUploadParts"
            ],
            "Resource": [
                "arn:aws:s3:::-migration-bucket",
                "arn:aws:s3:::-migration-bucket/*"
            ]
        }
    ]
}

Примечание.

Enterprise Importer не удаляет архив из AWS после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в разделе Настройка конфигурации жизненного цикла в контейнере в документации AWS.

В Azure создайте учетную запись хранения и запишите строка подключения. Дополнительные сведения см. в разделе "Управление ключами доступа к учетной записи хранения" в Документация Майкрософт.

Примечание.

Enterprise Importer не удаляет архив из Хранилище BLOB-объектов Azure после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в статье "Оптимизация затрат путем автоматического управления жизненным циклом данных в Документация Майкрософт".

После настройки хранилища BLOB-объектов с поддерживаемым поставщиком облачных служб необходимо настроить учетные данные для поставщика хранилища в :

  • Если вы используете Enterprise Server 3.8 или более поздней версии, настройте учетные данные в Консоль управления.
  • Если вы используете Enterprise Server 3.7 или более поздней версии, настройте учетные данные в CLI.

Примечание.

Необходимо настроить только хранилище BLOB-объектов в Консоль управления при использовании Enterprise Server 3.8 или более поздней версии. Если вы используете 3.7 или более поздней версии, настройте учетные данные в CLI вместо этого.

После настройки контейнера хранилища AWS S3 или учетной записи хранения Хранилище BLOB-объектов Azure настройте хранилище BLOB-объектов в Консоль управления экземпляр Enterprise Server. Дополнительные сведения о Консоль управлениясм. в статье администрирование экземпляра из консоли управления.

  1. В учетной записи администратора Enterprise Server, в правом верхнем углу любой страницы щелкните .

  2. Если вы еще не на странице "Администратор сайта" в левом верхнем углу щелкните "Администратор сайта". 1. На боковой панели " "Администратор сайта" щелкните Консоль управления.

  3. Войдите в Консоль управления.

  4. В верхней панели навигации** щелкните **"Параметры".

  5. В разделе "Миграции" нажмите кнопку "Включить" Миграции.

  6. При необходимости для импорта параметров хранилища, настроенных для Actions, выберите "Копировать параметры хранилища" из действий. Дополнительные сведения см. в статье "Включение действий с хранилищем BLOB-объектов Azure" и включение Actions с помощью хранилища Amazon S3.

    Примечание.

    После копирования параметров хранилища может потребоваться обновить конфигурацию облачной учетной записи хранения, чтобы работать с Enterprise Importer. В частности, необходимо убедиться, что разрешены IP-адреса . Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами .

  7. Если параметры хранилища не импортируются из Actions, выберите Хранилище BLOB-объектов Azure или Amazon S3 и заполните необходимые сведения.

    Примечание.

    Если вы используете Amazon S3, необходимо задать URL-адрес службы AWS для стандартной конечной точки региона AWS, в котором находится контейнер. Например, если контейнер находится в регионе eu-west-1 , будет указан https://s3.eu-west-1.amazonaws.comURL-адрес службы AWS. Сеть экземпляра Enterprise Server должна разрешить доступ к этому узлу. Конечные точки шлюза не поддерживаются, например bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com. Дополнительные сведения о конечных точках шлюза см. в разделе "Конечные точки шлюза" для Amazon S3 в документации AWS.

  8. Щелкните " Тестировать параметры хранилища".

  9. Нажмите кнопку Сохранить параметры.

Примечание.

Необходимо только настроить учетные данные хранилища BLOB-объектов в CLI при использовании Enterprise Server 3.7 или более поздней версии. Если вы используете 3.8 или более поздней версии, настройте хранилище BLOB-объектов в Консоль управления вместо этого.

Если вы настроите учетные данные хранилища BLOB-объектов в CLI, вы не сможете выполнить миграцию, в которой экспорт метаданных или источника Git превышает 2 ГБ. Чтобы выполнить эти миграции, обновите до Enterprise Server 3,8 или более поздней версии.

Когда вы будете готовы к миграции, вам потребуется предоставить учетные данные AWS в CLI: регион, ключ доступа, секретный ключ и маркер сеанса (при необходимости). Их можно передать в качестве аргументов или задать переменные среды, называемые AWS_REGION, и AWS_SESSION_TOKEN``AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY.

Кроме того, необходимо передать имя контейнера S3 с помощью аргумента --aws-bucket-name .

Когда вы будете готовы выполнить миграцию, вы можете передать строка подключения в CLI в качестве аргумента или передать его с помощью переменной AZURE_STORAGE_CONNECTION_STRINGсреды.

Если вы настроили правила брандмауэра в учетной записи хранения, убедитесь, что у вас есть доступ к диапазонам IP-адресов для назначения миграции. См . раздел AUTOTITLE.

Если вы хотите перенести несколько репозиториев в Enterprise Cloud одновременно, используйте CLI для создания скрипта миграции. Результирующий скрипт будет содержать список команд миграции, по одному на репозиторий.

Примечание.

Создание скрипта выводит скрипт PowerShell. Если вы используете терминал, вам потребуется вывести сценарий с .ps1 расширением файла и установить PowerShell для Mac[ или Linux, ](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2)чтобы запустить его.

Если вы хотите перенести один репозиторий, перейдите к следующему шагу.

Этот шаг необходимо выполнить с компьютера, который может получить доступ к API для экземпляр Enterprise Server. Если вы можете получить доступ к экземпляру из браузера, компьютер имеет правильный доступ.

Чтобы создать скрипт миграции, выполните gh gei generate-script команду.

Для Enterprise Server 3.8 или более поздней версии или если вы используете 3.7 или более поздней версии с Хранилище BLOB-объектов Azure, используйте следующие флаги:

Shell
gh gei generate-script ---source-org SOURCE \
  ---target-org DESTINATION \
  --output FILENAME \
  --ghes-api-url GHES-API-URL

Если вы используете Enterprise Server 3.7 или ниже с AWS S3, используйте следующие флаги:

Shell
gh gei generate-script ---source-org SOURCE \
  ---target-org DESTINATION \
  --output FILENAME \
  --ghes-api-url GHES-API-URL \
  --aws-bucket-name AWS-BUCKET-NAME

Замените заполнители в приведенной выше команде следующими значениями.

ЗаполнительЗначение
ИСТОЧНИКИмя исходной организации
НАЗНАЧЕНИЕИмя целевой организации
FILENAMEИмя файла для результирующего скрипта миграции

Если вы используете терминал, используйте .ps1 расширение файла в качестве созданного скрипта, чтобы запустить PowerShell. Вы можете установить PowerShell для Mac или Linux.
GHES-API-URLURL-адрес для API экземпляр Enterprise Server, например https://myghes.com/api/v3
AWS-BUCKET-NAMEИмя контейнера для контейнера AWS S3

АргументDescription
--target-api-url TARGET-API-URLЕсли вы переносите данные GHE.com, добавьте --target-api-url TARGET-API-URL, где TARGET-API-URL является базовым URL-адресом API для поддомена предприятия. Например: https://api.octocorp.ghe.com.
--no-ssl-verifyЕсли экземпляр Enterprise Server использует самозаверяющий или недопустимый SSL-сертификат, используйте --no-ssl-verify флаг. При использовании этого флага CLI пропустит проверку SSL-сертификата только при извлечении данных из экземпляра. Все остальные вызовы будут проверять SSL.
--download-migration-logsСкачайте журнал миграции для каждого перенесенного репозитория. Дополнительные сведения о журналах миграции см. в разделе Доступ к журналам миграции для Enterprise Importer.

После создания скрипта просмотрите файл и, при необходимости, измените скрипт.

  • Если есть какие-либо репозитории, которые вы не хотите перенести, удалить или закомментировать соответствующие строки.
  • Если в целевой организации есть другое имя репозиториев, обновите значение соответствующего --target-repo флага.
  • Если вы хотите изменить видимость нового репозитория, обновите значение соответствующего --target-repo-visibility флага. По умолчанию скрипт задает ту же видимость, что и исходный репозиторий.

Если в репозитории имеется более 10 ГБ данных о выпусках, выпуски не могут быть перенесены. --skip-releases Используйте флаг для переноса репозитория без выпусков.

Если вы скачали GEI как автономный двоичный файл, а не как расширение для CLI, необходимо обновить созданный скрипт, чтобы запустить двоичный файл вместо gh geiнего.

При переносе репозиториев GEI extension of the CLI выполняет следующие действия:

  1. Подключается к экземпляр Enterprise Server и создает два архива миграции для каждого репозитория, один для источника Git и один для метаданных.
  2. Отправляет архивы миграции в выбранный поставщик хранилища BLOB-объектов.
  3. Начинает миграцию в Enterprise Cloud, используя URL-адреса архивов, хранящихся в поставщике хранилища BLOB-объектов.
  4. Удаляет архив миграции с локального компьютера

Если вы переносите данные Enterprise Server 3.7 или более ранних версий, перед запуском скрипта необходимо задать дополнительные переменные среды для проверки подлинности в поставщике хранилища BLOB-объектов.

  • Для Хранилище BLOB-объектов Azure задайте AZURE_STORAGE_CONNECTION_STRING строка подключения для учетной записи хранения Azure.

    Поддерживаются только строка подключения с помощью ключей доступа к учетной записи хранения. Строки подключения, использующие подписанные URL-адреса (SAS), не поддерживаются. Дополнительные сведения о ключах доступа к учетной записи хранения см. в статье "Управление ключами доступа к учетной записи хранения" в документации Azure.

  • Для AWS S3 задайте следующие переменные среды.

    • AWS_ACCESS_KEY_ID: идентификатор ключа доступа для контейнера
    • AWS_SECRET_ACCESS_KEY: секретный ключ для контейнера
    • AWS_REGION: регион AWS, в котором находится контейнер
    • AWS_SESSION_TOKEN: маркер сеанса, если вы используете временные учетные данные AWS (см. сведения об использовании временных учетных данных с ресурсами AWS в документации AWS).

Этот шаг необходимо выполнить с компьютера, который может получить доступ к API для экземпляр Enterprise Server. Если вы можете получить доступ к экземпляру из браузера, компьютер имеет правильный доступ.

Если вы используете Enterprise Server 3.8 или более поздней версии, используйте следующие флаги:

Shell
gh gei migrate-repo ---source-org SOURCE --source-repo CURRENT-NAME ---target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL

Если вы переносите данные Enterprise Server 3.7 или более ранних версий и используете Хранилище BLOB-объектов Azure в качестве поставщика хранилища BLOB-объектов, используйте следующие флаги для проверки подлинности:

Shell
gh gei migrate-repo ---source-org SOURCE --source-repo CURRENT-NAME ---target-org DESTINATION --target-repo NEW-NAME \
    --ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"

Если вы переносите данные Enterprise Server 3.7 или более ранних версий и используете Amazon S3 в качестве поставщика хранилища BLOB-объектов, используйте следующие флаги для проверки подлинности:

Shell
gh gei migrate-repo ---source-org SOURCE --source-repo CURRENT-NAME ---target-org DESTINATION --target-repo NEW-NAME \
    --ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"

GHES-API-URL | URL-адрес для API экземпляр Enterprise Server, например https://myghes.com/api/v3 AZURE_STORAGE_CONNECTION_STRING | Строка подключения для учетной записи хранения Azure.

Обязательно процитировать строка подключения, содержащий символы, которые, скорее всего, будут интерпретированы оболочкой. AWS-BUCKET-NAME | Имя контейнера для контейнера AWS S3

АргументDescription
--target-api-url TARGET-API-URLЕсли вы переносите данные GHE.com, добавьте --target-api-url TARGET-API-URL, где TARGET-API-URL является базовым URL-адресом API для поддомена предприятия. Например: https://api.octocorp.ghe.com.
--no-ssl-verifyЕсли экземпляр Enterprise Server использует самозаверяющий или недопустимый SSL-сертификат, используйте --no-ssl-verify флаг. При использовании этого флага CLI пропустит проверку SSL-сертификата только при извлечении данных из экземпляра. Все остальные вызовы будут проверять SSL.
--skip-releasesЕсли в репозитории имеется более 10 ГБ данных о выпусках, выпуски не могут быть перенесены. --skip-releases Используйте флаг для переноса репозитория без выпусков.
--target-repo-visibility TARGET-VISIBILITY

Если вы хотите отменить миграцию, используйте abort-migration команду, заменив идентификатор MIGRATION-ID возвращенным идентификатором migrate-repo.

Shell
gh gei abort-migration --migration-id MIGRATION-ID

По завершении миграции рекомендуется просмотреть журнал миграции. Дополнительные сведения см. в разделе Доступ к журналам миграции для Enterprise Importer.

Рекомендуется просмотреть перенесенные репозитории для проверки звука.

После завершения миграции рекомендуется удалить архивы из контейнера хранилища. Если вы планируете выполнить дополнительные миграции, удалите архив, помещенный в контейнер хранилища, с помощью ADO2GH extension. Если вы закончите перенос, вы можете удалить весь контейнер.