Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Службы Azure DevOps
Enterprise Live Migrations (ELM) помогает переносить репозитории Azure DevOps в GitHub Enterprise Cloud с хранением данных в определённом регионе и с минимальными перебоями. ELM непрерывно синхронизирует исходный и целевой репозитории, чтобы ваши команды могли продолжать работу в Azure DevOps Services до момента окончательного перехода. Существует два пути миграции: полностью сократить до GitHub или использовать гибридную модель, в которой исходный код перемещается в GitHub, пока команды продолжают использовать Azure Boards и Azure Pipelines.
Замечание
В настоящее время ELM находится в ограниченной общедоступной предварительной версии. Чтобы зарегистрироваться и начать работу, зарегистрируйтесь здесь.
ELM доступен в двух интерфейсах: интерфейс командной строки Azure DevOps и портале Azure DevOps. Используйте интерфейс командной строки, если требуется выполнить скрипт или выполнить миграцию из командной строки. Используйте портал, если требуется интерактивный интерфейс для выбора репозиториев, запуска миграции и отслеживания хода выполнения.
Important
ELM поддерживает только миграции из Azure DevOps Services в GitHub Enterprise Cloud с хранением данных в определённом регионе. Если в настоящее время используется Azure DevOps Server, сначала перейдите в службы Azure DevOps перед использованием ELM.
Основные возможности
ELM предоставляет следующие основные возможности:
- Непрерывная синхронизация: ELM синхронизирует изменения из Azure DevOps в GitHub с помощью инкрементальной синхронизации и отслеживания изменений, чтобы команды могли продолжать работать в Azure DevOps до момента переключения. Запланируйте краткий период доступа только для чтения при переключении — обычно менее 30 минут для большинства репозиториев.
- Миграции с несколькими репозиториями: ELM поддерживает перенос нескольких репозиториев с до 20 параллельных заданий миграции. В интерфейсе командной строки выполните команду миграции для каждого репозитория одновременно. В пользовательском интерфейсе можно выбрать до 20 репозиториев, чтобы выполнить миграцию вместе.
- Комплексный рабочий процесс миграции: ELM отслеживает состояния репозитория с помощью инициализации, синхронизации, переключения, проверки и завершения. Эта модель обеспечивает видимость хода выполнения миграции и поддерживает устранение неполадок.
- Переход, запланированный клиентом: Вы сами выбираете и планируете момент перехода, чтобы переключить основную систему учёта с Azure DevOps на GitHub.
- Настройка после миграции упрощается: ELM помогает сократить работу вручную после перехода, настроив подключение Azure Boards и переключив Azure Pipelines, чтобы указать перенесенный репозиторий GitHub. Это упрощает для команд дальнейшее использование Azure DevOps для планирования и конвейеров, при этом они могут работать с исходным кодом в GitHub, сталкиваясь с меньшими трудностями при передаче работы и выполняя меньше дополнительных задач.
Поток данных миграции
ELM передает данные репозитория из источника в GitHub Enterprise Cloud через зашифрованные каналы. Он переносит содержимое репозитория, журнал, метаданные и разрешения, а затем использует добавочную синхронизацию для копирования только изменений после первоначальной передачи. ELM не хранит содержимое репозитория клиентов за пределами процесса миграции.
Безопасность и обработка данных
ELM разработан таким образом, чтобы содержимое репозитория оставалось под вашим контролем и Microsoft сохраняет только минимальные операционные данные, необходимые для выполнения миграции.
Данные в транзитном режиме
Все обмен данными между Azure DevOps, локальным агентом Linux и GitHub Enterprise Cloud использует протокол HTTPS с шифрованием TLS. Содержимое репозитория передается по зашифрованным протоколам Git. ELM не хранит содержимое репозитория клиентов за пределами активного процесса миграции.
Обработка PAT
ELM требует двух GitHub персональных маркеров доступа (PATs), каждый из которых используется для разной цели. Считайте оба секректными данными и предоставляйте только те области действия, которые указаны в разделе «Предварительные требования». Установите для PAT короткий срок действия и замените или отзовите их после завершения миграции. Немедленно отзовите любой из PAT, если подозреваете его компрометацию. Ограничение того, кто может просматривать или изменять подключение службы к оператору миграции и необходимым администраторам.
- PAT для подключения службы: Администратор GitHub Enterprise создает этот PAT и использует его для создания подключения службы Azure DevOps для целевой организации GitHub. Храните этот PAT только в подключении к службе. Не отправляйте его в систему контроля версий, не делитесь им в чате и не вставляйте его в логи.
- PAT для личной миграции: Пользователь, выполняющий миграцию, создает этот PAT и использует его для аутентификации в GitHub во время миграции.
Что Microsoft сохраняет
ELM хранит только операционные метаданные о миграции— идентификаторы репозитория, состояние миграции, результаты проверки, сообщения об ошибках и события аудита. ELM не хранит содержимое вашего репозитория, данные коммитов или PAT после завершения миграции.
Audit
ELM записывает события жизненного цикла миграции в журнал аудита Azure DevOps, чтобы администраторы организации могли просмотреть, кто запустил, приостановил, возобновил, запланировал переключение или отказался от миграции. Используйте журнал аудита для поддержки проверок соответствия требованиям и восстановления временной шкалы миграции, если вам нужно изучить проблему.
Чтобы просмотреть события аудита, перейдите в раздел Настройки организации>Аудит и отфильтруйте по области Enterprise Live Migrations.
Область ELM
Что автоматизирует ELM
- Выполняет проверки перед миграцией.
- Синхронизирует код Git, включая ветви, журнал изменений и теги для GitHub.
- Синхронизирует запросы на слияние, включая заголовки, описания, комментарии и историю пользователей.
- Создает целевой репозиторий GitHub.
- Переносит политики веток в наборы правил для веток в GitHub.
- Перенастраивает Azure Pipelines для ссылки на новый репозиторий GitHub.
- Создает подключение к доскам.
- Переходит с Azure DevOps на GitHub.
Действия, выполняемые вручную
- Очистите репозиторий Azure DevOps перед миграцией (большие файлы, запросы на вытягивание с 10 000 файлами и длинными именами ссылок).
- Создайте целевую GitHub организацию.
- Проверьте состояние репозитория после миграции (ветви, теги, история, запросы на включение изменений).
- Проверьте и скорректируйте наборы правил для ветвей после переноса.
- Обновите жёстко заданные URL-адреса репозиториев Azure DevOps в скриптах, конвейерах и инструментах.
- Настройте командный и пользовательский доступ в GitHub.
- Перенесите или выведите из эксплуатации рабочие элементы, вики, конвейеры и другие данные вне репозиториев.
Что переносит ELM
Данные, перенесенные
В настоящее время ELM переносит следующие данные репозитория из служб Azure DevOps в GitHub Enterprise Cloud с размещением данных:
- Исходный код Git, включая полную историю коммитов
- Ветки и теги
- Политики веток, перенесённые в виде наборов правил для веток GitHub
- Метаданные запроса на вытягивание, включая заголовки, описания, исходные и целевые ветви и комментарии
- История пользователя для запросов на включение изменений
Данные, которые не переносятся
ELM не переносит следующие данные:
- Рабочие задачи
- Определения конвейера
- Релизы
- Вики-сайты
- Планы тестирования и результаты тестирования
- Azure Artifacts
- Объекты Git LFS (в будущем)
ELM переносит активные и слитые запросы на слияние, а также запросы на слияние с доступной историей ветки. Заброшенные запросы на включение изменений с удалёнными ветвями не переносятся.
Как ELM использует конвейеры и что ожидать для затрат
ELM выполняется в Azure Pipelines с помощью локального агента Linux. Во время миграции ELM использует два типа заданий:
- Начальная проверка проверяет, готов ли репозиторий к миграции. Это задание выполняется один раз.
- Sync копирует репозиторий в GitHub и продолжает синхронизировать изменения с GitHub до переключения.
Локальный агент Linux должен оставаться в сети и доступен в течение срока миграции.
Как ELM использует пул агентов
ELM сводит к минимуму влияние на существующие конвейеры. Он использует только один агент одновременно, независимо от того, сколько агентов находится в пуле. Для каждого репозитория ELM ставит в очередь только одно задание за раз, не запускает задания параллельно и обычно ждёт от 30 до 60 минут, прежде чем поставить в очередь следующее задание, чтобы могла продолжаться другая работа в конвейере.
На практике ELM работает как любое другое задание конвейера и использует те же ресурсы, что и ваши текущие сборки. Он не должен взять на себя весь пул или блокировать несвязанную работу.
Что ожидать за затраты
ElM сам по себе является бесплатным для использования. Единственные возможные расходы связаны с мощностями Azure Pipelines, если ваша организация превысит включённый лимит параллельных заданий.
Каждое задание ELM может выполняться до одного часа, но тарификация в Azure Pipelines зависит от количества параллельно выполняемых заданий, а не от числа агентов или использованных минут. Так как ELM ограничивает себя одним параллельным заданием, многие клиенты могут выполнять миграции в пределах существующей емкости без дополнительных затрат. Если вы превысите предусмотренный объём, вам может потребоваться приобрести дополнительные параллельные задачи. Azure Pipelines также включает бесплатные минуты для частных проектов, поэтому добавленная стоимость обычно применяется только после исчерпания бесплатного уровня.
Рабочий процесс миграции
В общих чертах миграция ELM включает следующие шаги. Каждый шаг ссылается на подробные инструкции.
- Узнайте о корпоративных миграциях в реальном времени. Ознакомьтесь с этим обзором, чтобы понять, что делает ELM, что именно он переносит и как он вписывается в ваш план миграции. Определите, планирует ли ваша команда полностью переместить рабочие процессы разработки в GitHub или продолжить использование Azure DevOps и GitHub вместе в гибридной модели. При выборе гибридной модели ELM может помочь сократить настройку после миграции, переместив Azure Pipelines в перенесенный репозиторий GitHub и создав подключение Azure Boards.
- Выполните предварительные требования. Проверьте доступ, инструментирование и проверку подлинности и соберите идентификаторы, необходимые для выполнения команд миграции. Дополнительные сведения см. в разделе "Полные предварительные требования".
- Запустите миграцию. Выполните проверку подлинности в Azure DevOps, задайте значения по умолчанию и используйте интерфейс командной строки ELM для запуска начальной синхронизации. Дополнительные сведения см. в разделе "Запуск миграции".
- Мониторинг миграции. Просмотрите начальную синхронизацию и последующие добавочные синхронизации. Дополнительные сведения см. в разделе "Мониторинг миграции".
- Перейдите на GitHub. Запланируйте переключение, как только будете готовы. Вы должны завершить переход в течение 21 дней после начала полной миграции (когда начинается начальная синхронизация). Дополнительные сведения см. в разделе Переход на GitHub.
- Выполните задачи после миграции. Убедитесь, что все работает после завершения миграции. Дополнительные сведения см. в разделе Действия после миграции.
Проверки перед миграцией
В следующей таблице перечислены текущие ограничения инструментов, которые проверяются во время проверки и что происходит, если они не устранены.
| Ограничение | Порог | Если не устранено | Рекомендуемое действие |
|---|---|---|---|
| Размер отдельного файла в истории | > 400 МБ | Проверка завершается ошибкой, и миграция не может начаться, пока файл не будет удален или перемещен в Git LFS (будущее). | Переопределите журнал, чтобы удалить файл или перенести его в Git LFS (будущее), а затем повторно выполните проверку. |
| Размер пакета push-уведомлений | > 2 ГБ | Проверка завершается ошибкой, и миграция не может начаться, пока размер не будет уменьшен. | Уменьшите размер репозитория, удалив или разделив крупные коммиты, в дальнейшем переведите большие файлы в Git LFS или перепишите историю, чтобы удалить слишком большие объекты. |
| Длина имени ссылки на ветвь или тег | > 255 байт | Проверка не проходит, и миграция не может начаться, пока refs не будут переименованы или удалены. | Переименуйте или удалите ветвь или тег, а затем повторно выполните проверку. |
| Свежесть результатов проверки | Необходимо начать миграцию в течение 24 часов после успешного запуска в режиме только проверки. | Перед началом полной миграции необходимо повторно выполнить проверку. | Возобновите или запустите полную миграцию сразу после проверки либо повторно запустите только проверку. |
| Окно планирования переключения | Необходимо завершить переход в течение 21 дней после начала полной миграции (когда начинается начальная синхронизация). | Миграция не может оставаться в состоянии синхронизации на неопределенный срок. Необходимо завершить или отменить переход в окне или перезапустить миграцию. | Заранее запланируйте дату переключения, поддерживайте синхронизацию в исправном состоянии и скоординируйте коммуникации до закрытия окна. |
Ключевые роли и обязанности
| Роль | Description | Responsibilities |
|---|---|---|
| Оператор миграции (пользователь ELM) | Пользователь, выполняющий миграцию с помощью интерфейса командной строки | Создайте личный маркер доступа (PAT) для миграции. Выполните команды проверки и миграции с помощью Azure CLI. Укажите GUID репозитория, пул агентов и идентификатор подключения к службе. Отслеживайте состояние миграции и устраняйте ошибки. Запланируйте и выполните переход. |
| Администратор коллекции проектов Azure DevOps (PCA) и администратор проекта (PA) | Администратор уровня организации и уровня проекта в Azure DevOps | Предоставьте оператору миграции разрешение Корпоративная оперативная миграция: Управление миграциями. Создание пулов агентов или управление ими. Предоставление доступа к пулам агентов и подключениям к службам. |
| Владелец пула агентов | Специалист по управлению агентами сборки | Настройка локального агента Linux. Убедитесь, что пул агентов доступен и достижим. Поддержание работоспособности агента во время миграции. |
| Владелец репозитория или команда разработчиков | Команда, которая владеет репозиторием Azure DevOps | Очистите репозиторий перед миграцией (большие файлы, запросы на вытягивание и т. д.). Проверьте перенесённый репозиторий (ветки, запросы на слияние, история). Обновите конвейеры, скрипты и инструменты после миграции. |
| администратор GitHub Enterprise | Администратор целевой организации GitHub | Создайте PAT для миграции. Убедитесь, что в PAT есть необходимые области (например, repo, workflow, org). Создайте подключение службы в Azure DevOps с помощью PAT. Поделитесь идентификатором подключения к службе с оператором миграции. Убедитесь, что целевая организация существует и готова. Предоставление доступа пользователям и настройка единого входа. Установите приложение Azure Boards GitHub. |