Миграция из общедоступного проекта в GitHub

Azure DevOps Services

Important

Общедоступные проекты в Azure DevOps прекращены. Начиная с 2027 года существующие общедоступные проекты преобразуются в частные. Для получения дополнительной информации см. О прекращении поддержки общедоступных проектов и Переход с общедоступного проекта на GitHub.

В этой статье показано, как перенести каждую область обслуживания из общедоступного проекта Azure DevOps в эквивалент GitHub. Он охватывает репозитории, конвейеры, вики-сайты, артефакты и рабочие элементы.

Необходимые условия

Требование Сведения
Azure DevOps access Член проекта с по крайней мере базовым доступом
Учетная запись GitHub Учетная запись GitHub с разрешением на создание репозиториев
Git Локальная установка Git
GitHub CLI (необязательно) GitHub CLI для упрощенных операций

Перенос репозиториев

Репозитории GitHub поддерживают открытую совместную работу с пулл реквестами, форками и звёздами.

Используйте GitHub Enterprise Importer

GitHub Enterprise Importer — это рекомендуемое средство для переноса репозиториев из Azure DevOps Cloud в GitHub Enterprise Cloud. Он переносит Git-репозиторий (включая историю коммитов), запросы на вытягивание, историю пользователей, ссылки на рабочие элементы в запросах на вытягивание, вложения и политики ветвей.

  1. Установите расширение для миграции GitHub CLI:

    gh extension install github/gh-gei
    
  2. Проверка подлинности с помощью Azure DevOps и GitHub:

    # Sign in to Azure DevOps with Microsoft Entra ID and set the token
    az login
    export ADO_PAT=$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv)
    
    # Authenticate with GitHub
    gh auth login
    
  3. Создайте скрипт миграции для организации Azure DevOps:

    gh gei generate-script --ado-org {organization} --github-org {github-org} --output migrate.sh
    
  4. Или перенести один репозиторий:

    gh gei migrate-repo --ado-org {organization} --ado-team-project {project} \
      --ado-repo {repo} --github-org {github-org} --github-repo {new-repo}
    

Дополнительные сведения см. в разделе Понимание миграций с Azure DevOps на GitHub.

Используйте GitHub Importer

Для более простого варианта, работающего в браузере, используйте встроенный GitHub Импортёр.

  1. Войдите в GitHub и выберите репозиторий New.
  2. Введите имя репозитория и задайте видимость общедоступной.
  3. Выберите "Импорт репозитория" в верхней части страницы.
  4. Введите URL-адрес клона Azure DevOps: https://dev.azure.com/{organization}/{project}/_git/{repo}.
  5. При появлении запроса введите свои Azure DevOps учетные данные. Войдите с помощью Microsoft Entra ID. Если необходимо использовать токен личного доступа, создайте его с областью чтения кода>. Дополнительные сведения см. в разделе "Использование личных маркеров доступа".
  6. Нажмите кнопку "Начать импорт".

GitHub Importer переносит исходный код и историю коммитов Git, но не переносит pull-реквесты, ссылки на рабочие элементы или правила для веток. Дополнительные сведения см. в разделе Импортирование репозитория с использованием инструмента GitHub Importer.

Импорт из командной строки

Если GitHub Enterprise Importer не соответствует вашим потребностям, отправьте их непосредственно из локального клона:

# Clone the Azure DevOps repository with full history
git clone --bare https://dev.azure.com/{organization}/{project}/_git/{repo}
cd {repo}.git

# Push to the new GitHub repository
git push --mirror https://github.com/{owner}/{new-repo}.git

Important

Просмотрите журнал Git для учетных данных, ключей API или конфиденциальных данных перед отправкой в общедоступный репозиторий GitHub. Используйте такие инструменты, как git filter-repo, чтобы удалить конфиденциальное содержимое из истории.

Перенос конвейеров

GitHub Actions предлагает гибкие рабочие процессы и бесплатные минуты выполнения для общедоступных репозиториев.

Используйте GitHub Actions Importer

Импортер GitHub Actions автоматизирует преобразование Azure Pipelines в рабочие процессы GitHub Actions.

  1. Установите расширение CLI GitHub Actions Importer:

    gh extension install github/gh-actions-importer
    
  2. Выполните аудит, чтобы определить конвейеры для миграции:

    gh actions-importer audit azure-devops \
      --output-dir audit-results
    
  3. Преобразование определенного конвейера:

    gh actions-importer migrate azure-devops pipeline \
      --target-url https://github.com/{owner}/{repo} \
      --pipeline-id {pipeline-id} \
      --output-dir migration-results
    

Дополнительные сведения см. в миграции с Azure DevOps на GitHub Actions с помощью GitHub Actions Importer.

Основные различия между Azure Pipelines и GitHub Actions

Azure Pipelines (система конвейеров Azure) Действия GitHub
azure-pipelines.yml .github/workflows/*.yml
Этапы, задания, шаги Задания, шаги (повторно используемые рабочие процессы для этапов)
Служебные подключения GitHub секреты и OIDC
Пулы агентов Метки раннера (ubuntu-latest, windows-latest)
Ссылки на задачи (task@version) Ссылки на действия (owner/action@version)

Перенос вики-содержимого

Используйте GitHub Wiki или GitHub Pages для публикации руководств и инструкций.

Миграция на GitHub Wiki

Azure DevOps вики-сайты являются репозиториями Git. Клонируйте и отправьте их напрямую:

# Clone the Azure DevOps wiki repository
git clone https://dev.azure.com/{organization}/{project}/_git/{project}.wiki

cd {project}.wiki

# Add the GitHub wiki as a remote
git remote add github https://github.com/{owner}/{repo}.wiki.git

# Push to GitHub wiki
git push github main

Замечание

Перед отправкой создайте по крайней мере одну вики-страницу в репозитории GitHub, чтобы инициализировать репозиторий вики-сайта. Перейдите на вкладку Wiki в репозитории GitHub и создайте страницу.

Переход на страницы GitHub

Для проектов, требующих обширной документации, GitHub Pages предоставляет полный статический сайт, размещенный непосредственно из репозитория. Вы можете использовать генераторы статических сайтов, такие как Jekyll или MkDocs, для преобразования вики-содержимого в опубликованный сайт.

Перенос артефактов

пакеты GitHub поддерживают публикацию и использование пакетов NuGet, npm и Maven.

Перемещение пакетов в пакеты GitHub

  1. Скачайте существующие пакеты из источника Azure Artifacts.
  2. Перенастройте источник пакетов, чтобы указать на GitHub Packages.
  3. Опубликовать пакеты в новом фиде.

Например, чтобы перенести пакет npm:

# Set the GitHub Packages registry
npm config set @{owner}:registry https://npm.pkg.github.com

# Authenticate
npm login --registry=https://npm.pkg.github.com

# Publish
npm publish

Альтернативные реестры

Для пакетов, которым требуется широкая общедоступная видимость, рассмотрим общедоступные реестры:

Тип пакета Общедоступный реестр
NuGet nuget.org
npm npmjs.com
Maven Maven Central
Python PyPI
Груз crates.io

Перенос рабочих элементов

GitHub Issues и проекты предоставляют современные средства для управления багами и запросами новых возможностей.

Нет встроенного средства миграции для рабочих элементов из Azure Boards в GitHub Issues. Доступны несколько вариантов сообщества:

  • Инструмент для миграции из Azure DevOps в GitHub Issues — это средства с открытым исходным кодом на GitHub, которые преобразуют рабочие элементы в заявки, сохраняя заголовки, описания и метки.
  • CSV export/import — экспорт рабочих элементов из Azure Boards в формате CSV, а затем использовать GitHub CLI или API для создания проблем.
  • Сценарии REST API — используйте REST API Azure DevOps и REST API GitHub Issues для разработки пользовательского сценария миграции.

Экспорт рабочих элементов с помощью интерфейса командной строки Azure DevOps

# Export work items from a query
az boards query --wiql "SELECT [System.Id], [System.Title], [System.State] FROM workitems WHERE [System.TeamProject] = '{project}'" --organization https://dev.azure.com/{organization} --output table

Подсказка

Дайте приоритет миграции активных и последних рабочих элементов. Закрытые или исторические элементы могут не нуждаться в миграции— их можно сохранить в частном проекте для справки.

Замена панелей мониторинга

GitHub не имеет единой функции панели мониторинга, эквивалентной Azure DevOps панелям мониторинга. Вместо этого аналогичная функциональность распределена между несколькими встроенными функциями.

использование панели мониторинга Azure DevOps эквивалент GitHub
Отслеживание работы и сожжение GitHub Проекты со встроенными диаграммами Insights
Действие репозитория Аналитика репозитория (коммиты, ПР, трафик, участники)
Состояние сборки и CI GitHub Actions журнал выполнения рабочего процесса и индикаторы состояния
Общедоступная прозрачность Проблемы, запросы на вытягивание, выпуски и эмблемы README

Для панелей мониторинга на уровне организации, которые объединяют данные из нескольких репозиториев, изучите интеграции с GitHub Marketplace.

Контрольный список после миграции

После переноса содержимого проверьте следующие элементы:

  • [ ] Все репозитории Git доступны на GitHub с полной историей изменений.
  • [ ] Рабочие процессы CI/CD успешно выполняются в GitHub Actions.
  • [ ] Содержимое вики правильно отображается в GitHub вики или GitHub Pages.
  • [ ] Пакеты публикуются и восстанавливаются из нового реестра.
  • [ ] Активные рабочие элементы отслеживаются в задачах GitHub.
  • [ ] Внешние ссылки и значки указывают на новые страницы GitHub.
  • [ ] Участники совместной работы и члены сообщества уведомляются о новом расположении.
  • [ ] README в проекте Azure DevOps направляет посетителей в новое расположение GitHub.