Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакетная оценка позволяет анализировать портфель приложений Java, .NET и JavaScript/TypeScript в одном запуске. Вы получаете комплексное представление о ландшафте модернизации в приложениях. В этой статье описывается процесс эффективной оценки нескольких репозиториев. Процесс поддерживает как репозитории с одним языком, так и mono-repos, которые содержат сочетание проектов Java, .NET и JavaScript/TypeScript.
Каждое приложение анализируется по двум дополнительным трекам. Поиск проблем находит проблемы, которые нужно исправить. Сведения о кодовой базе описывают, как устроено приложение, чтобы вы могли учитывать это при планировании.
Проверка проблем
Проверка проблем обнаруживает проблемы модернизации и безопасности в трех доменах. Покрытие языка отличается по домену:
- Обновление — анализ версий среды выполнения и платформы. Охватывает Java и .NET.
- Готовность к облаку — соответствие целевой платформе Azure и проблемы миграции. Охватывает Java и .NET.
- Безопасность — сканирование уязвимостей CVE среди прямых и транзитивных зависимостей, а также проблемы безопасности CWE в соответствии с ISO 5055. Только Java в настоящее время; поддержка .NET и JavaScript/TypeScript запланирована.
Аналитика кодовой базы
Аналитика Codebase показывает, как устроено каждое приложение. Они создаются для проектов Java, .NET и JavaScript/TypeScript. Они появляются, когда в настройке «Охват анализа» выбран параметр Полный анализ.
- Архитектура — диаграмма высокоуровневой архитектуры со слоями, границами модулей, топологией среды выполнения и точками входа.
- Контракты API — интерфейсы REST, gRPC, очередей сообщений и вебхуков, которые приложение предоставляет или использует. Оценивает область влияния интеграции перед миграцией.
- Конфигурация — файлы конфигурации, переменные среды, флаги компонентов, строки подключения и секреты. Обеспечивает миграцию секретов и конфигураций в Azure Key Vault и Конфигурация приложений Azure.
- Бизнес-рабочие процессы — комплексные функциональные потоки, восстановленные из кода (например, заказ → резервирования → выполнение → оплаты). Служит основой для определения объёма регрессионного тестирования и взаимодействия с заинтересованными сторонами.
- Зависимости — прямые и транзитивные библиотеки, пакеты SDK и драйверы с фиксированными версиями. Передаёт сопоставление со службами Azure и выявляет закрепления на версиях EOL или бета-версиях.
- Модель данных — базы данных, схемы, ключевые сущности и связи из сопоставлений ORM и DDL. Управляет планированием миграции уровня данных.
Отчеты
Пакетная оценка особенно важна для планирования миграции, так как она позволяет эффективно оценивать готовность и требования различных приложений одновременно. С помощью пакетной оценки можно одновременно оценивать различные репозитории и получать подробные отчеты об оценке для каждого приложения. Он создает два типа отчетов для поддержки планирования миграции:
- Отчет о репозитории. Предоставляет подробные сведения о двух аспектах, определенных на уровне отдельного репозитория.
- отчет Aggregated: представляет общую перспективу всех оцененных приложений, предлагая сводную информацию, рекомендации по службам Azure, целевым платформам, путям обновления, стратегиям миграции и волнам миграции. Кроме того, агрегированный отчет включает сочетания клавиш для простого доступа к каждому отчету репозитория.
Пакетная оценка обеспечивает следующие преимущества:
Видимость между приложениями:
- Агрегированные отчеты: получение комплексного представления между приложениями.
- Анализ между репозиториями: определение общих шаблонов и зависимостей между приложениями.
- Инсайты о приоритизации: Понимание, какие приложения нуждаются в немедленном внимании.
Масштабирование и эффективность:
- Параллельная обработка: используйте облачные агенты для одновременной обработки нескольких репозиториев.
- Автоматизированные рабочие процессы: интеграция с конвейерами CI/CD для запланированной оценки.
- Экономия времени: сокращение общего времени оценки с недель до часов.
Необходимые условия
- Модернизация интерфейса командной строки.
- Доступ ко всем репозиториям, которые вы хотите оценить.
- GitHub аутентификация настроена (
gh auth login).
Настройка репозиториев
Агент модернизации поддерживает несколько способов указания репозиториев, которые требуется оценить:
- Текущая папка: оценка проекта в текущем рабочем каталоге.
- Ввод вручную. Введите пути к локальному каталогу или удаленные URL-адреса Git напрямую.
- Файл конфигурации репозитория: используйте файл конфигурации JSON, который перечисляет все репозитории.
Файл конфигурации репозитория
Для пакетных операций во многих репозиториях создайте файл конфигурации JSON для перечисления всех репозиториев. Например, создайте его .github/modernize/repos.json в рабочем каталоге или укажите пользовательский путь.
Убедитесь, что у вас есть необходимые разрешения для репозиториев или создайте их форк.
Простой формат (массив репозиториев):
[
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
},
{
"name": "PhotoAlbum",
"url": "https://github.com/Azure-Samples/PhotoAlbum.git"
},
{
"name": "eShopOnWeb",
"url": "https://github.com/dotnet-architecture/eShopOnWeb.git"
}
]
Полный формат (с ветвями и локальными путями):
{
"repos": [
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
"branch": "main"
},
{
"name": "local-project",
"path": "/absolute/path/to/project"
}
]
}
Каждая запись репозитория поддерживает следующие поля:
| Поле | Описание | Обязательный |
|---|---|---|
name |
Понятное имя репозитория (используется в отчетах и панелях мониторинга). | Да |
url |
URL-адрес клонирования Git в формате HTTPS или SSH. | Одно из url или path |
path |
Абсолютный путь к локальному каталогу. | Одно из url или path |
branch |
Ветвь для переключения после клонирования. | Нет |
description |
Описание, доступное для чтения человеком. | Нет |
Полный формат с группированием приложений (необязательно для организованных отчетов):
Вы можете добавить раздел apps[] для группирования репозиториев в логические приложения. При определении приложений агрегированный отчет упорядочивает результаты по приложениям и поддерживает распределение отчетов во внешних местах назначения.
{
"repos": [
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
"branch": "main"
},
{
"name": "PhotoAlbum",
"url": "https://github.com/Azure-Samples/PhotoAlbum.git"
}
],
"apps": [
{
"identifier": "photo-app",
"description": "Photo management application",
"repos": ["PhotoAlbum-Java"],
"output": {
"type": "local",
"path": "/path/to/reports/photo-app"
}
}
]
}
Каждый элемент приложения поддерживает следующее:
| Поле | Описание | Обязательный |
|---|---|---|
identifier |
Уникальное отображаемое имя приложения. | Да |
description |
Описание, доступное для чтения человеком. | Нет |
repos |
Список имен репозитория, принадлежащих этому приложению. | Да |
output |
Где распространять отчет об оценке этого приложения после создания. | Нет |
Поле output поддерживает следующие типы распределения:
| Тип | Описание | Обязательные поля |
|---|---|---|
local |
Копирование отчетов в локальный каталог. | path |
git |
Отправка отчетов в репозиторий Git. Формат URL-адреса .https://github.com/org/repo.git#branch:path |
url |
Подсказка
Вы можете включить репозитории из разных организаций и использовать различные методы проверки подлинности до тех пор, пока у вас есть доступ.
Агент модернизации автоматически обнаруживает repos.json файл .github/modernize/repos.json, когда вы выбираете опцию Из файла конфигурации в интерактивном режиме. Можно также указать пользовательский путь.
Запуск пакетной оценки
Доступны два режима выполнения:
- Локальное выполнение: агент модернизации обрабатывает репозитории друг за другом на локальном компьютере. Этот режим лучше всего подходит для меньшего набора приложений или для первоначального тестирования. Поддерживает репозитории URL-адреса Git и локального пути.
- Делегирование облачным агентам: Агент модернизации передаёт задачи облачным агентам GitHub Copilot для параллельной обработки в облаке. Этот режим быстрее выполняет задачи в сценариях с несколькими репозиториями.
Это важно
Для делегирования облачным агентам требуется, чтобы у репозиториев были URL-адреса репозиториев GitHub (github.com). Репозитории локальных путей и другие поставщики, кроме GitHub (такие как GitLab, Azure DevOps), не поддерживаются для делегирования в облачной среде. Используйте локальное выполнение для этих репозиториев.
Подсказка
С помощью делегирования агента облака можно включить параллельное выполнение во всех репозиториях. Такой подход значительно сокращает общее время оценки для крупных портфелей.
Интерактивный режим (оценка локально)
Запустите агент модернизации:
modernizeВыберите "Оценка " в главном меню.
Выберите способ указания целевых репозиториев. Выберите из файла конфигурации , чтобы использовать
repos.jsonфайл.Подсказка
Вы также можете выбрать Ручной ввод, чтобы напрямую ввести локальные пути или URL-адреса удаленных Git-репозиториев, или текущую папку, чтобы оценить проект в текущем каталоге.
repos.jsonЕсли файл обнаружен в расположении по умолчанию, агент автоматически заполняет его. В противном случае введите путь к файлу конфигурации и нажмите клавишу ВВОД.По умолчанию выбраны все репозитории. Отмените выбор любых репозиториев, которые вы хотите пропустить, а затем нажмите клавишу ВВОД , чтобы подтвердить выбор.
- Используйте клавиши со стрелками для навигации и нажмите пробел для переключения отдельных репозиториев.
Выберите домены оценки для анализа. Upgrade и Cloud Readiness запускаются в Java и .NET проектах в репозитории. Security по умолчанию не установлен и доступен только для проектов Java; установите этот флажок, чтобы выполнить поиск уязвимостей CVE и проблем CWE в соответствии с ISO 5055.
Просмотрите и настройте параметры оценки. На странице конфигурации показаны параметры, сгруппированные по языку и домену:
-
Общее / охват анализа:
- Только проблемы (по умолчанию): выявляет проблемы, связанные с модернизацией и безопасностью, в исходном коде. Самый быстрый вариант.
- Полный анализ: обнаруживает проблемы и дополнительно создает аналитические сведения о базе кода в шести аспектах приложения — архитектура, контракты API, конфигурация, бизнес-рабочие процессы, зависимости и модель данных. Занимает больше времени, чем анализ только проблем.
- Java / UPGRADE: целевая среда выполнения (OpenJDK 11, 17, 21 или 25).
- Java / CLOUD READINESS: целевые вычислительные службы, целевая операционная система и контейнеризация.
-
Java / SECURITY: минимальная серьезность CVE (
low,medium,high,critical; по умолчаниюhigh). Более низкие значения серьезности включают больше результатов. (домен безопасности доступен только для Java.) - .NET / UPGRADE: Целевая платформа (.NET 8, 9 или 10).
- .NET / CLOUD READINESS: целевые вычислительные службы.
Используйте клавиши со стрелками для перехода, нажмите клавишу ВВОД , чтобы изменить значение, или нажмите кнопку "Продолжить ", чтобы продолжить работу с текущими параметрами.
Подсказка
Рекомендуемые значения по умолчанию работают для большинства сценариев. Эти параметры необходимо изменить только в том случае, если у вас есть определенные требования, например для конкретной версии JDK, конкретной Azure вычислительной службы или другого порогового значения серьезности CVE.
-
Общее / охват анализа:
Выберите режим выполнения. Выберите Оценить локально.
Введите выходной путь для результатов оценки или нажмите клавишу ВВОД , чтобы принять значение по умолчанию.
Агент автоматически:
После завершения оценки агент автоматически открывает агрегированный отчет.
Интерактивный режим (делегирование в облачные агенты)
Сначала настройте облачные агенты в каждом репозитории приложений. Чтобы настроить облачные агенты, создайте форки репозиториев с примерами.
Конфигурация для приложений .NET
Настройка запуска в Windows для приложений .NET Framework
По умолчанию Copilot облачный агент выполняется в среде Ubuntu Linux. Для приложений .NET Framework требуется среда Windows. Чтобы включить его, настройте .github/workflows/copilot-setup-steps.yaml в main ветви репозитория приложений, как показано в следующем примере:
# Windows-based Copilot Setup Steps for .NET tasks
# Note: Windows runners have firewall limitations that may affect some network operations
# Use this workflow for .NET projects that require Windows-specific tooling
name: "Copilot Setup Step (Windows)"
on:
workflow_dispatch:
jobs:
copilot-setup-steps:
runs-on: windows-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v5
Узнать больше можно из: Шаги настройки среды разработки Copilot с помощью Copilot
Отключение брандмауэра
Отключите интегрированный брандмауэр Copilot облачного агента в параметрах репозитория, как показано на следующем рисунке:
СЕРВЕР MCP
Настройте MCP-сервер модернизации GitHub Copilot в разделе Cloud agent настроек репозитория, как показано в следующем примере:
{
"mcpServers": {
"AppModDotNetUpgrade": {
"type": "local",
"command": "dotnet",
"args": [
"dnx",
"Microsoft.GitHubCopilot.Modernization.Mcp",
"--prerelease",
"--yes",
"--source",
"https://api.nuget.org/v3/index.json"
],
"env": {
"APPMOD_CALLER_TYPE": "modernize-cli"
},
"tools": ["*"]
}
}
}
Настройка для приложений Java
Настройте сервер MCP GitHub Copilot Modernization в разделе Cloud agent настроек репозитория, как показано в следующем примере:
{
"mcpServers": {
"app-modernization": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server"
]
}
}
}
Шаги
Интерактивный процесс делегирования в облако идентичен процессу локальной оценки вплоть до этапов выбора источника, репозитория, домена и настройки. Единственное различие заключается в выборе режима выполнения и о том, что происходит после этого.
Запустите агент модернизации:
modernizeВыберите "Оценка " в главном меню, выберите источник (файл конфигурации, входные данные вручную или текущую папку), выберите репозитории, выберите домены оценки и просмотрите конфигурацию. Эти шаги выполняются точно так же, как описано в разделе Интерактивный режим (локальная оценка).
Выберите режим выполнения. Выберите Делегирование облачным агентам.
Введите выходной путь для результатов оценки или нажмите клавишу ВВОД , чтобы принять значение по умолчанию.
Агент автоматически делегирует задачи оценки для каждого репозитория облачным агентам и выполняет их в облаке параллельно.
Агент извлекает результаты оценки для каждого приложения в локальную среду и создает объединенный отчет на месте.
После завершения оценки агент автоматически открывает агрегированный отчет.
Неинтерактивный режим (CLI)
Кроме того, можно использовать неинтерактивный режим, указав аргументы команд напрямую. Используйте команду modernize assess:
Оценка локально с помощью файла конфигурации репозитория:
modernize assess --source .github/modernize/repos.json
Оцените несколько репозиториев, указав источники напрямую:
modernize assess --source https://github.com/org/repo1 --source https://github.com/org/repo2
Оценивайте с помощью делегирования облачным агентам:
modernize assess --source .github/modernize/repos.json --delegate cloud --wait
Дополнительные сведения см. в разделе оценка — команды CLI.
Интеграция Миграция Azure
Вы можете выполнять пакетную оценку непосредственно из проекта Миграция Azure и автоматически передавать полученные отчеты в Миграция Azure.
Сквозный поток:
Скачайте стартовый шаблон
repos.jsonиз Миграция Azure. Миграция Azure создает JSON-файл, охватывающий приложения, выбранные для оценки модернизации. Файл уже содержит записиapps[]и блокoutput, указывающий на проект Миграция Azure.Заполните URL-адреса репозитория. Измените каждую запись
repos[]в скачанный файл, чтобы добавить URL-адрес репозитория GitHub для приложения. Сохраните блокиapps[]иoutput, так как они были созданы Миграция Azure — эти блоки управляют отправкой.Запустите пакетную оценку. Выполните оценку локально или делегируя облачным агентам, выполнив описанные выше действия. Оба режима выполнения соблюдают конфигурацию вывода Миграция Azure.
Отчеты отправляются автоматически. По завершении оценки агент модернизации отправляет отчет каждого приложения обратно в проект Миграция Azure. Дополнительный флаг CLI не требуется — параметр
output.typeв файлеrepos.jsonуправляет загрузкой.
Общие сведения об агрегированном отчете
Объединенный отчет предоставляет комплексное представление для оцененных приложений следующим образом:
Панель мониторинга
- Общий обзор состояния портфеля: общее количество приложений, сколько требуют обновления, а также общее количество блокировок и проблем.
- Распределение технологий: какие платформы используются и сколько приложений совместно используются.
- Распределение усилий: является ли общая миграция небольшой или большой задачей.
Рекомендации
- Azure Services: сопоставляет текущие зависимости с рекомендуемыми эквивалентами Azure. Общие зависимости между приложениями решаются один раз, поэтому вы избегаете повторной работы для каждого приложения.
- Target Platform: помогает выбрать вариант размещения, например между Контейнеры приложений Azure и AKS, а также выявляет возможности для консолидации.
- Путь обновления: определяет, какие приложения нуждаются в обновлении платформы в качестве обязательного условия, разделяя работу обновления от работы миграции.
- Cost Estimate: оценивает затраты в Azure на запуск каждого приложения в рекомендованной целевой среде, чтобы вы могли учитывать эти расходы при расстановке приоритетов.
- Стратегии миграции: рекомендует подход к миграции для каждого приложения — например, Replatform для сценариев переноса и адаптации или Rearchitect для более глубокого рефакторинга, чтобы для каждого приложения была выбрана стратегия, соответствующая степени его готовности.
- Волны миграции: распределение приложений по степени готовности и уровню риска по этапам (например, волна 1 — быстрые результаты, волна 2 — основное облако, волна 3 — долгосрочные инициативы). Этот подход позволяет ранним выигрышам, а более трудные приложения подготавливаются параллельно.
Матрица оценки приложений
- Краткий обзор каждого приложения по аспектам платформы, целевой платформы, рекомендации по обновлению, разбивка проблем (обязательный, потенциальный, необязательный), размер усилий и многое другое.
- Ссылки на отдельные отчеты приложений для детализации при необходимости.
Устранение неполадок пакетного анализа
Распространенные проблемы
Ошибки доступа к репозиторию:
- Проверьте проверку подлинности GitHub с помощью
gh auth status. - Убедитесь, что у вас есть доступ ко всем репозиториям, перечисленным в
repos.json.
Неудачи при клонировании:
- Проверьте правильность и доступность URL-адресов
repos.jsonрепозитория. - Убедитесь, что у вас есть правильные разрешения на доступ для всех репозиториев.
- Проверьте параметры сетевого подключения и VPN.
Сбои оценки:
- Проверьте, содержит ли репозиторий допустимые проекты Java, .NET или JavaScript/TypeScript.
- Убедитесь, что существуют файлы сборки, например
pom.xml,build.gradle, ,*.csproj*.sln,*.slnxилиpackage.json. - Просмотрите сообщения об ошибках в выходных данных консоли. Некритические предупреждения (например, отсутствующие файлы сборки в подмодуле) теперь отображаются непосредственно в выводе CLI — ознакомьтесь с ними, прежде чем считать отчет окончательным.
Проблемы делегирования облачных агентов:
- Делегирование облачного агента поддерживает только URL-адреса репозиториев
https://github.com/.... Локальные пути и провайдеры, отличные от GitHub (GitLab, Azure DevOps), сразу отклоняются с понятным сообщением об ошибке. Используйте локальное выполнение для этих репозиториев. - Убедитесь, что у вас есть правильные разрешения на создание рабочих процессов GitHub Actions.
- Проверьте GitHub Actions разрешения и квоты для вашей организации.
- Для приложений .NET Framework убедитесь, что конфигурация запуска Windows настроена правильно.
- Проверьте конфигурацию сервера MCP.
Дальнейшие действия
После завершения пакетной оценки можно:
Продолжить рабочий процесс модернизации:
- Выполнение пакетного обновления в репозиториях — применение согласованных обновлений на основе результатов оценки.
Дополнительные сведения:
Предоставьте отзыв
Ваши входные данные важны! Если у вас есть отзывы о пакетной оценке или агенте модернизации, создайте запрос в репозитории github-copilot-appmod или используйте форму обратной связи по модернизации GitHub Copilot.