{"meta":{"title":"Миграция вашего репозитория с помощью Enterprise Live Migrations","intro":"Переходите с GitHub Enterprise Server В GHE.com с минимальным простоем.","product":"Миграции","breadcrumbs":[{"href":"/ru/enterprise-server@3.21/migrations","title":"Миграции"},{"href":"/ru/enterprise-server@3.21/migrations/elm","title":"Живые миграции (GHES в GHE.com)"},{"href":"/ru/enterprise-server@3.21/migrations/elm/migrate-your-repository","title":"Мигрируйте свой репозиторий"}],"documentType":"article"},"body":"# Миграция вашего репозитория с помощью Enterprise Live Migrations\n\nПереходите с GitHub Enterprise Server В GHE.com с минимальным простоем.\n\n> \\[!NOTE]\n> Enterprise Live Migrations находится в Публичный предварительный просмотр процессе и может измениться.\n\n> \\[!TIP] Следуя этому руководству, вы можете ознакомиться с [Справочник CLI Enterprise Live Migrations](/ru/enterprise-server@3.21/migrations/elm/elm-cli-reference) для получения более подробной информации об использовании. Если вы столкнётесь с ошибками, смотрите [Устранение неполадок при миграции в реальном времени с GitHub Enterprise Server на GHE.com](/ru/enterprise-server@3.21/migrations/elm/troubleshooting).\n\n## Необходимые условия\n\nУбедитесь, что вы готовы к миграции. См [. раздел AUTOTITLE](/ru/enterprise-server@3.21/migrations/elm/prepare-for-your-migration).\n\n## 1. Создание токенов доступа\n\nВы должны аутентифицироваться с помощью a personal access token (classic) как для источника, так и для назначения миграции. Подробные инструкции см. в разделе [Управление личными маркерами доступа](/ru/enterprise-server@3.21/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).\n\n**Запишите оба жетона**, так как они понадобятся вам на следующем этапе.\n\n1. Создайте personal access token (classic) ON **GitHub Enterprise Server** с помощью следующих телескопов.\n\n   * `repo`\n   * `admin:org`\n   * `admin:repo_hook`\n   * `admin:org_hook`\n\n2. Создайте personal access token (classic) ON **GHE.com** с помощью следующих телескопов.\n\n   * `repo`\n   * `workflow`\n   * `admin:org`\n   * `admin:repo_hook`\n   * `admin:enterprise`\n\n3. Если для целевой организации GHE.comGHE.com на , авторизуйте токен.\n\n## 2. Настройте GitHub Enterprise Server\n\nПеред миграцией необходимо установить некоторую конфигурацию GitHub Enterprise Server на экземпляре. Эти значения конфигурации применимы ко всем ELM миграциям. Разработчики GitHub Enterprise Server могут столкнуться с коротким простоем при применении новой конфигурации.\n\n1. Доступ к GitHub Enterprise Server административной оболочке через SSH. См [. раздел AUTOTITLE](/ru/enterprise-server@3.21/admin/administering-your-instance/administering-your-instance-from-the-command-line/accessing-the-administrative-shell-ssh).\n2. Установим следующие переменные конфигурации с `ghe-config`.\n\n   Например: `ghe-config app.elm-exporter.enabled true`\n\n   | Variable                                             | Настрой это на...                                                                   |\n   | ---------------------------------------------------- | ----------------------------------------------------------------------------------- |\n   | `app.elm-exporter.enabled`                           | `true`                                                                              |\n   | `app.elm.internal-webhooks-enabled`                  | `true`                                                                              |\n   | `app.elm-exporter.webhooks-loopback-address-enabled` | `true`                                                                              |\n   | `secrets.elm-exporter.migration-target-url`          | URL API для вашего целевого предприятия (например: `https://api.octocorp.ghe.com`). |\n\n**Не** указывайте слэш в конце URL. |\n\\| `secrets.elm-exporter.migration-target-token` | Токен доступа, который вы создали для GHE.com. |\n\\| `secrets.elm-exporter.source-token` | Токен доступа, который вы создали для GitHub Enterprise Server. |\n\\| `secrets.elm-exporter.source-user` | Имя пользователя, связанное с токеном GitHub Enterprise Server (например: `ghe-admin`). |\n\\| `app.migrations.enabled` | Если у вас ещё не включены миграции на экземпляре, нужно установить это на `true`. |\n\n1. Примените конфигурацию.\n\n   ```shell copy\n   ghe-config-apply\n   ```\n\n## 3. Задайте необходимые переменные среды\n\nПосле применения конфигурации и перед началом миграции задайте необходимые переменные среды. Рассмотрим пример.\n\n```shell\nexport API_URL='http://localhost:1738'\n```\n\n> \\[!IMPORTANT] Скопируйте значения для `API_URL` и `MIGRATION_MANAGER_HMAC_KEY` дословно. Остальные переменные специфичны для вашей среды.\n\n| Variable                            | Обязательное значение                                                               |\n| ----------------------------------- | ----------------------------------------------------------------------------------- |\n| API\\_URL                            | `http://localhost:1738`                                                             |\n| MIGRATION\\_MANAGER\\_HMAC\\_KEY       | `$(ghe-config secrets.elm-exporter.elm-exporter-hmac-keys)`                         |\n| MIGRATION\\_TARGET\\_URL              | URL API для вашего целевого предприятия (например: `https://api.octocorp.ghe.com`). |\n| **Не** указывайте слэш в конце URL. |                                                                                     |\n| MIGRATION\\_TARGET\\_TOKEN            | Фор personal access token (classic)GHE.com                                          |\n\nЛюбое из этих значений также может быть предоставлено в виде CLI-флагов для любой `elm` команды, которая будет иметь приоритет над переменными. Например: `--api-url http://localhost:1738`.\n\n## 4. Создать миграцию\n\nСоздайте новую миграцию, указав данные исходного и целевой репозиторий.\n`--pat-name` должно быть установлено `system-pat` как статическое значение. Остальные ценности — это временные заполнения, специфичные для вашей среды.\n\n> \\[!NOTE] Они `target-org` могут быть новыми или уже существующими. Если целевая организация ещё не существует, она будет создана во время миграции. Однако настройки из исходной организации не будут мигрированы.\n\n```shell copy\nelm migration create \\\n  --source-org EXISTING-GHES-ORG \\\n  --source-repo EXISTING-GHES-REPO \\\n  --target-org GHEC-ORG \\\n  --target-repo NEW-GHEC-REPO \\\n  --target-api GHEC-API-URL \\\n  --pat-name system-pat\n```\n\nРассмотрим пример.\n\n```shell\nelm migration create \\\n  --source-org my-ghes-org \\\n  --source-repo my-ghes-repo \\\n  --target-org my-dr-org \\\n  --target-repo my-dr-repo \\\n  --target-api $MIGRATION_TARGET_URL \\\n  --pat-name system-pat\n```\n\nОпциональные флаги:\n\n* `--start`: Если вы готовы начать миграцию немедленно.\n* `--target-visibility`: Мигрированные репозитории создаются по умолчанию с **внутренней** видимостью, но можно указать `private`.\n\n### Сохранить ID миграции\n\nВы должны увидеть ответ вроде следующего:\n\n```json\n{\n  \"migrationId\": \"2b5c9eae-b5da-4306-ab04-2a29cc2b7cb9\",\n  \"expiresAt\": \"2026-02-11T21:49:33.619162159Z\"\n}\n```\n\nЭкспортируйте `migrationId` их как переменную, так как она понадобится для следующих команд. Рассмотрим пример.\n\n```shell\nexport MIGRATION_ID='2b5c9eae-b5da-4306-ab04-2a29cc2b7cb9'\n```\n\n## 5. Начать миграцию\n\nЕсли вы ещё не начали миграцию, начните сейчас, используя только что сохранённый ID миграции.\n\n```shell copy\nelm migration start --migration-id $MIGRATION_ID\n```\n\nЭто запускает процессы заполнения и обновления в реальном времени.\nELM Сейчас собирает данные из исходного репозитория и прослушивает поддерживаемые события Webhook.\n\n## 6. Мониторинг миграции\n\nКогда миграция начнётся, вы должны увидеть новый репозиторий на GHE.com. Во время миграции репозиторий заполняется первоначальной загрузкой данных и будет получать обновления по мере того, как разработчики продолжают работать в исходном репозитории.\n\nРегулярно выполняйте следующую команду для мониторинга статуса миграции. Вы увидите разбивку статусов источника и цели, а также информацию о текущих данных, которые перемещаются.\n\n```shell copy\nelm migration status --migration-id $MIGRATION_ID\n```\n\nСамым важным индикатором в ответе является статус объекта **combinedState** . Когда статус достигнет `COMBINED_STATUS_READY_FOR_CUTOVER`, вы должны быть готовы перейти к следующему этапу. Однако вас уведомят, `displayMessage` если какие-либо отдельные ресурсы не смогли мигрировать, что может потребоваться проверить.\n\nРассмотрим пример.\n\n```json\n  \"combinedState\":  {\n    \"status\":  \"COMBINED_STATUS_READY_FOR_CUTOVER\",\n    \"displayMessage\":  \"Ready for cutover (1 resources failed)\",\n    \"repositories\":  [\n      {\n        \"repositoryNwo\":  \"new-test-org/my-new-repo\",\n        \"phase\":  \"REPOSITORY_PHASE_READY_FOR_CUTOVER\",\n        \"displayStatus\":  \"Ready for cutover (1 failed)\"\n      }\n    ],\n    \"readyForCutover\":  true,\n    \"cutoverBlockers\":  []\n  },\n```\n\nСоветы\n\n* Если вы запускаете несколько миграций, вы можете проверить статус всех с помощью `elm migration list`. Эта команда по умолчанию показывает миграции в процессе, но вы также можете фильтровать по `--status`.\n* Если вы столкнулись с статусами неудач, требующим внимания, смотрите [Устранение неполадок при миграции в реальном времени с GitHub Enterprise Server на GHE.com](/ru/enterprise-server@3.21/migrations/elm/troubleshooting#statuses-and-recommended-actions).\n\n## 7. Завершить миграцию\n\nКогда миграция готова к переходу, вы сможете завершить её. Процесс перехода архивирует исходный репозиторий, делая **его постоянно доступным только для чтения** , если администратор репозитория не удалит его.\n\n```shell copy\nelm migration cutover-to-destination --migration-id $MIGRATION_ID\n```\n\nПродолжайте отслеживать миграцию. Когда вы видите `MIGRATION_STATUS_COMPLETED` статус в верхней части ответа, миграция завершена, хотя есть некоторые последующие задачи, предоставляющие пользователям доступ из GitHub Enterprise Server.\n\n## Дальнейшие действия\n\nДайте пользователям доступ к новому репозиторию и сверьте активность с учётными записями пользователей. См [. раздел AUTOTITLE](/ru/enterprise-server@3.21/migrations/elm/complete-your-migration)."}