Сведения о миграции репозитория с помощью GitHub Enterprise Importer
Чтобы просмотреть инструкции по использованию API, используйте переключатель инструментов в верхней части страницы.
Необходимые компоненты
- Настоятельно рекомендуется выполнить пробную версию миграции и завершить рабочую миграцию в ближайшее время. Дополнительные сведения о пробных запусках см. в разделе Обзор миграции между продуктами GitHub.
- Убедитесь, что вы понимаете данные, которые будут перенесены, и известные ограничения поддержки импорта. Дополнительные сведения см. в разделе Сведения о миграции между продуктами GitHub.
- Хотя и не требуется, рекомендуется остановить работу во время рабочей миграции. Importer не поддерживает разностную миграцию, поэтому любые изменения, которые происходят во время миграции, не будут переноситься. Если вы решили не останавливать работу во время рабочей миграции, необходимо вручную перенести эти изменения.
- В исходных и конечных организациях необходимо либо владелец организации, либо предоставить роль миграции. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
- Если вы используете GitHub Enterprise Server 3.8 или более поздней версии, чтобы настроить хранилище BLOB-объектов для экспортированных архивов, вам потребуется доступ к Консоль управления.
Шаг 1. Установка GEI extension of the GitHub CLI
Если это первая миграция, необходимо установить GEI extension of the GitHub CLI. Дополнительные сведения о GitHub CLIсм. в разделе Сведения о GitHub CLI.
Кроме того, можно скачать автономный двоичный файл на странице выпусков для github/gh-gei
репозитория. Двоичный файл можно запускать напрямую без gh
префикса.
-
Установите GitHub CLI. Инструкции по установке для GitHub CLI см. в репозитории GitHub CLI.
Note
Вам нужна версия 2.4.0 или более позднюю версию GitHub CLI. Вы можете проверить версию, установленную
gh --version
с помощью команды. -
Установите GEI extension.
Shell gh extension install github/gh-gei
gh extension install github/gh-gei
В любое время, когда вам нужна помощь с GEI extension, можно использовать --help
флаг с помощью команды. Например, gh gei --help
перечислит все доступные команды и gh gei migrate-repo --help
отобразит список всех параметров, доступных для migrate-repo
команды.
Шаг 2. Обновление GEI extension of the GitHub CLI
Данные GEI extension обновляются еженедельно. Чтобы убедиться, что вы используете последнюю версию, обновите расширение.
gh extension upgrade github/gh-gei
Шаг 3. Задание переменных среды
Прежде чем использовать GEI extension для миграции на GitHub Enterprise Cloud, необходимо создать personal access tokens, которые могут получить доступ к исходным и целевым организациям, а затем задать personal access tokens в качестве переменных среды.
- Создайте и запишите personal access token (classic), которая будет проходить проверку подлинности для целевой организации на GitHub Enterprise Cloud, убедившись, что маркер соответствует всем требованиям. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
- Создайте и запишите personal access token, которая будет проходить проверку подлинности для исходной организации, убедившись, что этот маркер также соответствует всем одинаковым требованиям.
Шаг 4. Настройка хранилища BLOB-объектов
Так как многие экземпляры данных GitHub Enterprise Server сидят за брандмауэрами, мы используем хранилище BLOB-объектов в качестве промежуточного расположения для хранения данных, к которым могут получить доступ GitHub.
Сначала необходимо настроить хранилище BLOB-объектов с помощью поддерживаемого поставщика облачных служб. Затем необходимо настроить учетные данные для поставщика хранилища в Консоль управления или GitHub CLI.
Настройка хранилища BLOB-объектов с помощью поддерживаемого поставщика облачных служб
GitHub CLI поддерживает следующие поставщики хранилища BLOB-объектов:
- Amazon Web Services (AWS) S3
- хранилище BLOB-объектов Azure
Настройка контейнера хранилища AWS S3
В 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:::github-migration-bucket",
"arn:aws:s3:::github-migration-bucket/*"
]
}
]
}
Note
GitHub Enterprise Importer не удаляет архив из AWS после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в разделе Настройка конфигурации жизненного цикла в контейнере в документации AWS.
Настройка учетной записи хранения Хранилище BLOB-объектов Azure
В Azure создайте учетную запись хранения и запишите строка подключения. Дополнительные сведения см. в разделе "Управление ключами доступа к учетной записи хранения" в Документация Майкрософт.
Note
GitHub Enterprise Importer не удаляет архив из Хранилище BLOB-объектов Azure после завершения миграции. Чтобы сократить затраты на хранение, рекомендуется настроить автоматическое удаление архива через период времени. Дополнительные сведения см. в статье "Оптимизация затрат путем автоматического управления жизненным циклом данных в Документация Майкрософт".
Настройка учетных данных хранилища BLOB-объектов
После настройки хранилища BLOB-объектов с поддерживаемым поставщиком облачных служб необходимо настроить учетные данные для поставщика хранилища в GitHub:
- Если вы используете GitHub Enterprise Server 3.8 или более поздней версии, настройте учетные данные в Консоль управления.
- Если вы используете GitHub Enterprise Server 3.7 или более поздней версии, настройте учетные данные в GitHub CLI.
Настройка хранилища BLOB-объектов в Консоль управления экземпляр GitHub Enterprise Server
Note
Необходимо настроить только хранилище BLOB-объектов в Консоль управления при использовании GitHub Enterprise Server 3.8 или более поздней версии. Если вы используете 3.7 или более поздней версии, настройте учетные данные в GitHub CLI вместо этого.
После настройки контейнера хранилища AWS S3 или учетной записи хранения Хранилище BLOB-объектов Azure настройте хранилище BLOB-объектов в Консоль управления экземпляр GitHub Enterprise Server. Дополнительные сведения о Консоль управлениясм. в статье администрирование экземпляра из консоли управления.
-
В учетной записи администратора GitHub Enterprise Server, в правом верхнем углу любой страницы щелкните .
-
Если вы еще не на странице "Администратор сайта" в левом верхнем углу щелкните "Администратор сайта". 1. На боковой панели " "Администратор сайта" щелкните Консоль управления.
-
Войдите в Консоль управления.
-
В верхней панели навигации** щелкните **"Параметры".
-
В разделе "Миграции" нажмите кнопку "Включить" GitHub Миграции.
-
При необходимости для импорта параметров хранилища, настроенных для GitHub Actions, выберите "Копировать параметры хранилища" из действий. Дополнительные сведения см. в статье "Включение действий GitHub с хранилищем BLOB-объектов Azure" и включение GitHub Actions с помощью хранилища Amazon S3.
Note
После копирования параметров хранилища может потребоваться обновить конфигурацию облачной учетной записи хранения, чтобы работать с GitHub Enterprise Importer. В частности, необходимо убедиться, что разрешены IP-адреса GitHub. Дополнительные сведения см. в разделе Управление доступом к миграции между продуктами GitHub.
-
Если параметры хранилища не импортируются из GitHub Actions, выберите Хранилище BLOB-объектов Azure или Amazon S3 и заполните необходимые сведения.
Note
Если вы используете Amazon S3, необходимо задать URL-адрес службы AWS для стандартной конечной точки региона AWS, в котором находится контейнер. Например, если контейнер находится в регионе
eu-west-1
, будет указанhttps://s3.eu-west-1.amazonaws.com
URL-адрес службы AWS. Сеть экземпляра GitHub Enterprise Server должна разрешить доступ к этому узлу. Конечные точки шлюза не поддерживаются, напримерbucket.vpce-0e25b8cdd720f900e-argc85vg.s3.eu-west-1.vpce.amazonaws.com
. Дополнительные сведения о конечных точках шлюза см. в разделе "Конечные точки шлюза" для Amazon S3 в документации AWS. -
Щелкните " Тестировать параметры хранилища".
-
Нажмите кнопку Сохранить параметры.
Настройка учетных данных хранилища BLOB-объектов в GitHub CLI
Note
Необходимо только настроить учетные данные хранилища BLOB-объектов в GitHub CLI при использовании GitHub Enterprise Server 3.7 или более поздней версии. Если вы используете 3.8 или более поздней версии, настройте хранилище BLOB-объектов в Консоль управления вместо этого.
Если вы настроите учетные данные хранилища BLOB-объектов в GitHub CLI, вы не сможете выполнить миграцию, в которой экспорт метаданных или источника Git превышает 2 ГБ. Чтобы выполнить эти миграции, обновите до GitHub Enterprise Server 3,8 или более поздней версии.
Настройка учетных данных AWS S3 в GitHub CLI
Когда вы будете готовы к миграции, вам потребуется предоставить учетные данные AWS в GitHub CLI: регион, ключ доступа, секретный ключ и маркер сеанса (при необходимости). Их можно передать в качестве аргументов или задать переменные среды, называемые AWS_REGION
, и AWS_SESSION_TOKEN``AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY
.
Кроме того, необходимо передать имя контейнера S3 с помощью аргумента --aws-bucket-name
.
Настройка учетных данных учетной записи Хранилище BLOB-объектов Azure в GitHub CLI
Когда вы будете готовы выполнить миграцию, вы можете передать строка подключения в GitHub CLI в качестве аргумента или передать его с помощью переменной AZURE_STORAGE_CONNECTION_STRING
среды.
Разрешение сетевого доступа
Если вы настроили правила брандмауэра в учетной записи хранения, убедитесь, что у вас есть доступ к диапазонам IP-адресов для назначения миграции. См . раздел AUTOTITLE.
Шаг 5. Создание скрипта миграции
Если вы хотите перенести несколько репозиториев в GitHub Enterprise Cloud одновременно, используйте GitHub CLI для создания скрипта миграции. Результирующий скрипт будет содержать список команд миграции, по одному на репозиторий.
Note
Создание скрипта выводит скрипт PowerShell. Если вы используете терминал, вам потребуется вывести сценарий с .ps1
расширением файла и установить PowerShell для Mac[ или Linux, ](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.2)чтобы запустить его.
Если вы хотите перенести один репозиторий, перейдите к следующему шагу.
Создание скрипта миграции
Этот шаг необходимо выполнить с компьютера, который может получить доступ к API для экземпляр GitHub Enterprise Server. Если вы можете получить доступ к экземпляру из браузера, компьютер имеет правильный доступ.
Чтобы создать скрипт миграции, выполните gh gei generate-script
команду.
Для GitHub Enterprise Server 3.8 или более поздней версии или если вы используете 3.7 или более поздней версии с Хранилище BLOB-объектов Azure, используйте следующие флаги:
gh gei generate-script --github-source-org SOURCE \ --github-target-org DESTINATION \ --output FILENAME \ --ghes-api-url GHES-API-URL
gh gei generate-script --github-source-org SOURCE \
--github-target-org DESTINATION \
--output FILENAME \
--ghes-api-url GHES-API-URL
Если вы используете GitHub Enterprise Server 3.7 или ниже с AWS S3, используйте следующие флаги:
gh gei generate-script --github-source-org SOURCE \ --github-target-org DESTINATION \ --output FILENAME \ --ghes-api-url GHES-API-URL \ --aws-bucket-name AWS-BUCKET-NAME
gh gei generate-script --github-source-org SOURCE \
--github-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-URL | URL-адрес для API экземпляр GitHub Enterprise Server, например https:/ |
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:/ . |
--no-ssl-verify | Если экземпляр GitHub Enterprise Server использует самозаверяющий или недопустимый SSL-сертификат, используйте --no-ssl-verify флаг. При использовании этого флага GitHub CLI пропустит проверку SSL-сертификата только при извлечении данных из экземпляра. Все остальные вызовы будут проверять SSL. |
--download-migration-logs | Скачайте журнал миграции для каждого перенесенного репозитория. Дополнительные сведения о журналах миграции см. в разделе Доступ к журналам миграции для GitHub Enterprise Importer. |
Просмотр скрипта миграции
После создания скрипта просмотрите файл и, при необходимости, измените скрипт.
- Если есть какие-либо репозитории, которые вы не хотите перенести, удалить или закомментировать соответствующие строки.
- Если в целевой организации есть другое имя репозиториев, обновите значение соответствующего
--target-repo
флага. - Если вы хотите изменить видимость нового репозитория, обновите значение соответствующего
--target-repo-visibility
флага. По умолчанию скрипт задает ту же видимость, что и исходный репозиторий.
Если в репозитории имеется более 10 ГБ данных о выпусках, выпуски не могут быть перенесены. --skip-releases
Используйте флаг для переноса репозитория без выпусков.
Если вы скачали GEI как автономный двоичный файл, а не как расширение для GitHub CLI, необходимо обновить созданный скрипт, чтобы запустить двоичный файл вместо gh gei
него.
Шаг 6. Миграция репозиториев
При переносе репозиториев GEI extension of the GitHub CLI выполняет следующие действия:
- Подключается к экземпляр GitHub Enterprise Server и создает два архива миграции для каждого репозитория, один для источника Git и один для метаданных.
- Отправляет архивы миграции в выбранный поставщик хранилища BLOB-объектов.
- Начинает миграцию в GitHub Enterprise Cloud, используя URL-адреса архивов, хранящихся в поставщике хранилища BLOB-объектов.
- Удаляет архив миграции с локального компьютера
Перенос нескольких репозиториев
Если вы переносите данные GitHub Enterprise Server 3.7 или более ранних версий, перед запуском скрипта необходимо задать дополнительные переменные среды для проверки подлинности в поставщике хранилища BLOB-объектов.
-
Для Хранилище BLOB-объектов Azure задайте
AZURE_STORAGE_CONNECTION_STRING
строка подключения для учетной записи хранения Azure.Поддерживаются только строка подключения с помощью ключей доступа к учетной записи хранения. строки Подключение ion, использующие подписанные URL-адреса (SAS), не поддерживаются. Дополнительные сведения о ключах доступа к учетной записи хранения см. в статье "Управление ключами доступа к учетной записи хранения" в документации Azure.
-
Для AWS S3 задайте следующие переменные среды.
AWS_ACCESS_KEY_ID
: идентификатор ключа доступа для контейнераAWS_SECRET_ACCESS_KEY
: секретный ключ для контейнераAWS_REGION
: регион AWS, в котором находится контейнерAWS_SESSION_TOKEN
: маркер сеанса, если вы используете временные учетные данные AWS (см. сведения об использовании временных учетных данных с ресурсами AWS в документации AWS).
Перенос одного репозитория
Этот шаг необходимо выполнить с компьютера, который может получить доступ к API для экземпляр GitHub Enterprise Server. Если вы можете получить доступ к экземпляру из браузера, компьютер имеет правильный доступ.
Если вы используете GitHub Enterprise Server 3.8 или более поздней версии, используйте следующие флаги:
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME --ghes-api-url GHES-API-URL
Если вы переносите данные GitHub Enterprise Server 3.7 или более ранних версий и используете Хранилище BLOB-объектов Azure в качестве поставщика хранилища BLOB-объектов, используйте следующие флаги для проверки подлинности:
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \ --ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --azure-storage-connection-string "AZURE_STORAGE_CONNECTION_STRING"
Если вы переносите данные GitHub Enterprise Server 3.7 или более ранних версий и используете Amazon S3 в качестве поставщика хранилища BLOB-объектов, используйте следующие флаги для проверки подлинности:
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \ --ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"
gh gei migrate-repo --github-source-org SOURCE --source-repo CURRENT-NAME --github-target-org DESTINATION --target-repo NEW-NAME \
--ghes-api-url GHES-API-URL --aws-bucket-name "AWS-BUCKET-NAME"
Заполнители
GHES-API-URL | URL-адрес для API экземпляр GitHub 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:/ . |
--no-ssl-verify | Если экземпляр GitHub Enterprise Server использует самозаверяющий или недопустимый SSL-сертификат, используйте --no-ssl-verify флаг. При использовании этого флага GitHub CLI пропустит проверку SSL-сертификата только при извлечении данных из экземпляра. Все остальные вызовы будут проверять SSL. |
--skip-releases | Если в репозитории имеется более 10 ГБ данных о выпусках, выпуски не могут быть перенесены. --skip-releases Используйте флаг для переноса репозитория без выпусков. |
--target-repo-visibility TARGET-VISIBILITY |
Прерывание миграции
Если вы хотите отменить миграцию, используйте abort-migration
команду, заменив идентификатор MIGRATION-ID возвращенным идентификатором migrate-repo
.
gh gei abort-migration --migration-id MIGRATION-ID
gh gei abort-migration --migration-id MIGRATION-ID
Шаг 7. Проверка миграции и проверка журнала ошибок
По завершении миграции рекомендуется просмотреть журнал миграции. Дополнительные сведения см. в разделе Доступ к журналам миграции для GitHub Enterprise Importer.
Рекомендуется просмотреть перенесенные репозитории для проверки звука.
После завершения миграции рекомендуется удалить архивы из контейнера хранилища. Если вы планируете выполнить дополнительные миграции, удалите архив, помещенный в контейнер хранилища, с помощью ADO2GH extension. Если вы закончите перенос, вы можете удалить весь контейнер.