Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Службы Azure DevOps
Используйте эту статью для диагностики и устранения распространенных ошибок, возникающих во время корпоративной динамической миграции (ELM). Для большинства сбоев проверьте поле errorMessage в выводе JSON команды az devops migrations status.
Ошибки при создании
| Симптом | Вероятно, причина | Резолюция |
|---|---|---|
403 Forbidden на migrations create/status, или migrations list ничего не возвращает |
У вашей учётной записи нет разрешения Управление корпоративными миграциями в реальном времени для этого репозитория. Это разрешение распространяется на каждый репозиторий, поэтому его можно использовать в одном репозитории, а не в другом. Команда list возвращает только миграции, которые можно просмотреть, поэтому отсутствующие разрешения отображаются как пустой результат, а не ошибка. |
Попросите администратора репозитория предоставить право Manage enterprise live migrations для конкретного репозитория. Интерфейс командной строки передает решение об авторизации сервера без изменений, поэтому повторное выполнение az login не помогает. |
| Целевой репозиторий уже находится в процессе миграции | Другая миграция существует для того же целевого объекта. | Дождитесь завершения или отмените операцию, а затем повторите попытку. |
TargetRepositoryDoesNotExist Сбой предварительной проверки |
Целевой GitHub репозиторий уже существует (часто из-за того, что предварительная миграция была прекращена без очистки). | Удалите целевой репозиторий GitHub и снова запустите migrations create. Если вы намеренно хотите повторно использовать непустой целевой ресурс, передайте --skip-validation TargetRepositoryDoesNotExist, но только после того, как убедитесь, что имеющееся содержимое можно безопасно перезаписать. |
| Целевой репозиторий в несовместимом состоянии | Целевой объект не пуст или использовался другим исходным репозиторием. | Используйте пустой целевой репозиторий. Если вы ранее отменили миграцию, удалите целевой репозиторий и повторите попытку. |
migrations create отклоняет --enable-auto-discover-pipelines |
Вы включили автоматическое обнаружение конвейеров без подключения к службе конвейера. | Добавьте --pipeline-service-connection-id <guid>. CLI отклоняет автообнаружение без подключения к службе, поскольку автообнаружение не может выполняться без такого подключения. |
Неправильная организация в --org |
Автоопределение заменило --org. |
Добавьте --detect false в команду или обновите организацию по умолчанию. |
The migrations command is not recognized |
Azure DevOps расширение CLI не установлено или устарело. | Установите или обновите расширение cli Azure DevOps, а затем убедитесь, что команда доступна перед началом работы. |
Ошибки проверки
Если миграция находится в состоянии "Сбой" на этапе проверки , обычно это указывает на проблему с соответствием требованиям. Проверьте errorMessage в выводе JSON.
| Симптом | Вероятно, причина | Резолюция |
|---|---|---|
| Срок действия проверки истек (24 часа) до начала полной миграции | Время ожидания окна проверки истекло. | Снова запустите проверку и начните полную миграцию в течение 24 часов. |
| Слишком большой файл (>400 МБ) | Один из файлов в истории превышает лимит. | Удалите большой файл из журнала или переместите его в Git LFS (будущее), а затем снова выполните проверку. |
| Слишком длинное имя ссылки (>255 байт) | Имя ветви или тега превышает ограничение GitHub. | Переименуйте или удалите ссылку перед миграцией. |
| Пул агентов не найден | Именованный пул агентов не существует. | Подтвердите имя пула агентов в Azure DevOps и убедитесь, что оператор миграции может получить к нему доступ. |
POLICY_ERROR |
Временная ошибка в обработчике проверки. | Повторите миграцию с помощью az devops migrations resume. |
Ошибки синхронизации
Если ваша миграция находится в состоянии Сбой на этапе Синхронизация, проверьте errorMessage в выходных данных JSON.
| Симптом | Вероятно, причина | Резолюция |
|---|---|---|
| Синхронизация остановилась (время последней синхронизации устарело) | Временные проблемы с подключением или ограничением скорости. | ELM автоматически выполняет повторные попытки. Если синхронизация приостановлена более одного часа, возобновляйте работу вручную.az devops migrations resume |
| Отсутствующие коммиты в GitHub | Синхронизация была прервана. | Проверьте состояние. Возобновите миграцию, если status: Failed или status: Suspended. |
status: Failed С validationIssues: "Migration NN: GitHub migration is no longer active." |
Срок действия объекта миграции на стороне GitHub истёк (он действует ограниченное время), или синхронизация на стороне GitHub завершилась сбоем на раннем этапе. | Отмените миграцию и создайте её заново — новый create инициирует новую миграцию GitHub. Затем очистите все оставшиеся данные о перенастройке конвейера с помощью az devops migrations pipelines delete --repository-id <guid> --migration-id NN. |
Предупреждение
Создание новой миграции с migrations create сбрасывает 21-дневное окно переключения. Если вы приближаетесь к концу исходного окна, запланируйте расписание переключения соответствующим образом перед началом новой миграции.
Ошибки при переходе
Если миграция находится в состоянии Сбой на этапе Переключение, проверьте errorMessage в выходных данных JSON.
| Симптом | Вероятно, причина | Резолюция |
|---|---|---|
| Репозиторий Azure DevOps застрял в режиме только для чтения | Сбой произошёл в процессе переключения. | Восстановите доступ на запись, отменив миграцию с помощью флага --remove-read-only: az devops migrations abandon --repository-id <guid> --org <url> --remove-read-only --yes Этот флаг отправляет removeReadOnly=true, который снова переводит исходный репозиторий Azure DevOps в режим чтения и записи и отменяет миграцию. Запустите его только в том случае, если вы планируете остановить миграцию, а не повторить переключение. |
Ошибки повторного подключения конвейера
Перенастройка конвейеров перенаправляет конвейеры, ссылающиеся на исходный репозиторий Azure Repos, на перенесённый репозиторий GitHub. Проверьте состояние каждого конвейера с помощью az devops migrations pipelines list --org <url> --repository-id <guid>.
| Симптом | Вероятно, причина | Резолюция |
|---|---|---|
pipelines list отображает 0 зарегистрированных конвейеров после автоматического обнаружения |
Миграция была создана без --enable-auto-discover-pipelines--pipeline-service-connection-idизменений, поэтому обнаружение выполнялось как no-op. |
Подключитесь с помощью pipelines update --service-connection-id <guid>, затем зарегистрируйте определения с помощью pipelines submit --pipeline-ids <ids>. Подключение соединения не добавляет конвейеры задним числом. |
Состояние конвейера preCheckFailed с UnreadableYaml |
Файл YAML конвейера отсутствует в ветви репозитория по умолчанию. Предварительная проверка считывает YAML только из ветви по умолчанию. | Выполните слияние YAML-файла с ветвью по умолчанию и запустите pipelines retry --pipeline-ids <id>, или исключите конвейер с помощью pipelines update --remove-ids <id>. |
| Отключённые конвейеры добавлены и не проходят предварительные проверки | Автоматическое обнаружение регистрирует отключенные определения, которые часто имеют устаревшие или отсутствующие YAML в ветви по умолчанию. | Удалите безвредные или отключённые конвейеры из набора перенастройки с помощью pipelines update --remove-ids <ids>, вместо того чтобы мириться со сбоями. Позже вы сможете снова добавить их с помощью --add-ids. |
Сбой переключения: Repository rule violations found. Changes must be made through a pull request. |
При переключении ELM коммитит каждый YAML-файл клона (.migrations/<name>-<defId>.yml) напрямую в ветку по умолчанию целевого репозитория GitHub, которую блокирует набор правил для веток. |
Разрешите учётной записи ELM отправлять изменения напрямую в целевую ветку по умолчанию (или предварительно создать файл через pull request), затем запустите pipelines retry --pipeline-ids <id>. |
pipelines submit возвращает 400 "A valid service connection ID is required" |
К миграции не привязано ни одного подключения к службе. | Передайте --service-connection-id <guid> в submit, или сначала прикрепите его с помощью pipelines update --service-connection-id <guid> (или при создании с помощью --pipeline-service-connection-id). |
pipelines list возвращает 400 при сбое миграции |
Сведения о конвейере недоступны для миграций, завершившихся с ошибкой. | Очистите данные переподключения с помощью pipelines delete --repository-id <guid> --migration-id NN. Получите NN из префикса Migration NN: в тексте validationIssues у migrations status. Сама по себе отмена миграции не удаляет данные о перепривязке. |
Распространенные проблемы с интерфейсом командной строки и конфигурацией
| Симптом | Вероятно, причина | Резолюция |
|---|---|---|
Запросы переходят к неправильному узлу (например, codedev.ms) |
Автоопределение определяет другой удалённый репозиторий Git. | Добавьте --detect false ко всем командам. |
| Запросы направляются на старый URL-адрес организации | Устаревшая организация по умолчанию в конфигурации. | Выполните команду az devops configure --defaults organization=https://dev.azure.com/<org>. |
Команда az devops migrations не найдена |
Azure DevOps расширение не установлено или устарело. | Установка или обновление: az extension add -n azure-devops или az extension update -n azure-devops. |
| Ошибка "Активное состояние" при возобновлении | Миграция уже активна. | Сначала приостановите работу с помощью az devops migrations pause, а затем возобновите её. |
cutover cancel возвращает ошибку |
Этап уже перешёл к Cutover — отмена возможна только на этапе Synchronization. |
Используйте az devops migrations abandon для остановки миграции или обратитесь к группе ELM, если выполняется переключение. |
| Перенесён не тот репозиторий | Использован неверный GUID репозитория. | Всегда проверяйте с помощью az repos show --query id перед созданием миграции. |
Проблемы после миграции
| Симптом | Вероятно, причина | Резолюция |
|---|---|---|
| Сбой конвейеров после переключений | Определения конвейера по-прежнему ссылались на репозиторий Azure DevOps. | Обновите определения конвейера, чтобы ссылаться на перенесенный репозиторий GitHub. Убедитесь, что связанные подключения к службам, триггеры и необходимые проверки состояния указывают на правильный источник. |
| Наборы правил для веток, не обеспечивающие применение ожидаемых политик | Миграция набора правил не завершена, или проверки CI неактивны. | Просмотрите наборы правил в параметрах репозитория. Обновите имена обязательных проверок статуса после перенастройки конвейеров. |
| Пользователи не могут получить доступ к репозиторию GitHub | Пользователи не добавляются в организацию GitHub. | Добавьте пользователей в организацию GitHub. |
| Коммиты, не связанные с профилями GitHub | Несоответствие адреса электронной почты между Azure DevOps и GitHub. | Если адрес электронной почты пользователя в Azure DevOps отличается от его адреса электронной почты в GitHub, коммиты не будут автоматически привязываться к его профилю GitHub. Это влияет на все миграции платформ, а не только ELM. |
| URL-адреса подмодулей, указывающие на Azure DevOps | Ссылки на подмодулы не были обновлены. | Вручную обновите .gitmodules, чтобы указать url-адреса репозитория GitHub. |
Где искать журналы и сигналы
| Что вам нужно | Где найти его |
|---|---|
| Состояние миграции и этап | az devops migrations status --org <url> --repository-id <guid> |
| Полные выходные данные JSON с подробными сведениями об ошибке | az devops migrations status ... -o json |
| Сведения о сбое проверки |
validationIssues поле в выводе состояния JSON |
| Состояние перекоммутации конвейера | az devops migrations pipelines list --org <url> --repository-id <guid> |
| Список всех миграций (включая неактивные) | az devops migrations list --org <url> --include-all |
| GUID репозитория Azure DevOps | az repos show --org <url> --project <proj> --repository <name> --query id -o tsv |
| Журнал аудита жизненного цикла миграции (кто запустил, приостановил, запланировал переключение или отказался от неё) | Параметры> организацииАудит, фильтрация по области Enterprise Live Migrations |
Справочник по командам, параметрам, состояниям и этапам
Полный список команд CLI, параметров, этапов миграции и состояний миграции см. в справочнике по ИНТЕРФЕЙСу командной строки ELM.