Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакетное обновление позволяет одновременно применять согласованные планы модернизации в нескольких репозиториях. В этой статье показано, как эффективно обновлять несколько приложений в масштабе предприятия.
С помощью пакетного обновления можно:
- Одновременное обновление нескольких приложений с помощью одного целевого объекта обновления.
- Применение согласованных шаблонов с помощью аналогичных шаблонов обновления в приложениях.
- Используйте параллельное выполнение при делегировании в агенты облачного программирования.
Пакетное обновление обеспечивает следующие преимущества:
Согласованное выполнение:
- Стандартный подход: применение одинаковых шаблонов модернизации для всех репозиториев.
- Сокращение изменчивости: Обеспечьте единообразные пути обновления для аналогичных приложений.
- Повторяемые стратегии: использование навыков, специфичных для организации на разных платформах.
Масштабирование и эффективность:
- Параллельная обработка: используйте агенты облачного программирования для одновременной обработки нескольких репозиториев.
- Автоматизированные рабочие процессы: интеграция с конвейерами CI/CD для запланированной модернизации.
- Экономия времени: сокращение общего времени модернизации с недель до часов.
Необходимые условия
- Модернизация интерфейса командной строки.
- Завершенная пакетная оценка (рекомендуется, но не требуется).
- Все репозитории используют один и тот же язык программирования (Java или .NET).
- Доступ ко всем репозиториям, которые требуется обновить.
- Настроена проверка подлинности GitHub (
gh auth login).
Это важно
Все репозитории в пакетном обновлении должны использовать один и тот же язык программирования. Если репозиторий использует другой язык, пакетное обновление помечает репозиторий как неудачный и пропускает его.
Настройка репозиториев
Чтобы включить пакетное обновление, создайте .github/modernize/repos.json файл в рабочем каталоге, который перечисляет все репозитории, которые требуется обновить.
Подсказка
Для примеров репозиториев сначала сделайте форк и убедитесь, что у вас есть права администратора для делегирования задания Агентам облачного кодирования.
[
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
},
{
"name": "ZavaSocialFrontEnd",
"url": "https://github.com/Azure-Samples/ZavaSocialFrontEnd"
}
]
Конфигурация репозитория
Для каждой записи требуется:
- имя: понятное имя репозитория (используется в отчетах и панелях мониторинга).
- URL клона Git (формат HTTPS).
Подсказка
Вы можете включить репозитории из разных организаций и использовать различные методы проверки подлинности до тех пор, пока у вас есть доступ.
Расположение файла
Файл repos.json необходимо поместить в .github/modernize/repos.json.
Агент модернизации автоматически обнаруживает этот файл при выполнении пакетных операций.
Выбор режима выполнения
Пакетное обновление поддерживает два режима выполнения и два метода взаимодействия:
Режимы выполнения
Локальное выполнение
- Лучше всего: тестирование, небольшие наборы репозиториев (1–5 репозиториев) или при желании локального управления.
- Как это работает: обрабатывает репозитории последовательно на локальном компьютере.
- Требуется настройка: нет никаких предварительных требований.
Делегирование агента кодирования облака
- Лучше всего: Операции корпоративного масштаба, крупные портфели (5+ репозиториев) или параллельные обработки.
- Как это работает: отправляет задачи в агенты облачного программирования GitHub для параллельного выполнения в облаке.
- Требуется настройка: конфигурация сервера MCP в каждом репозитории (настроенная во время установки).
Подсказка
При параллельной обработке репозиториев делегирование агента облачного программирования может сократить общее время модернизации от часов до минут.
Методы взаимодействия
Интерактивный режим (TUI)
- Направляемый опыт работы с меню и подсказками.
- Лучше всего подходит для пользователей, использующих продукт впервые, или при необходимости ознакомиться с параметрами.
- Поддерживает локальное и облачное выполнение.
Неинтерактивный режим (CLI/headless)
- Система основана на командной строке и полностью автоматизированная.
- Оптимальный выбор для конвейеров CI/CD и автоматизации.
- Поддерживает как локальное, так и облачное выполнение с флагом
--delegate cloud.
Замечание
Вы можете объединить любой режим выполнения с любым методом взаимодействия. Рассмотрим пример.
-
modernize(интерактивный, локальный) -
modernize→ выбрать агенты облачного программирования (интерактивные, облачные) -
modernize upgrade "Java 21"(неинтерактивный, локальный) -
modernize upgrade "Java 21" --delegate cloud(неинтерактивная, облачная)
Как работает пакетное обновление
Рабочий процесс пакетного обновления:
- Обнаружение языка: автоматически обнаруживает язык проекта (Java или .NET) из первого репозитория.
- Создание плана: создает план обновления на основе запроса или использует последние версии LTS.
- Выполнение: Применяет обновление к каждому репозиторию.
- Проверка: создает и проверяет изменения для каждого репозитория.
Запуск пакетного обновления
После настройки репозиториев и выбора режима выполнения запустите пакетное обновление.
Интерактивный режим (обновление локально)
Запустите агент модернизации:
modernizeАгент обнаруживает
repos.jsonфайл и отображает список репозитория:Выберите репозитории для обновления и нажмите клавишу
Enter, чтобы подтвердить выбор.-
Нажмите
Ctrl+AДля выбора всех репозиториев. -
Или используйте клавиши со стрелками для навигации и нажатия
Enterклавиш, чтобы выбрать отдельные репозитории.
-
Нажмите
Выберите 2. Обновление из главного меню.
Чтобы запустить обновление, выберите 1. Обновление локально.
Агент автоматически:
- Создает план обновления на основе запроса.
- Применяет план к каждому репозиторию последовательно.
- Создает и проверяет каждый репозиторий после изменений.
- Отображает ход выполнения и сводку для каждого репозитория.
Интерактивный режим (делегирование в агенты облачного программирования)
Предварительные требования. Настройка сервера MCP
Перед запуском обновления настройте сервер GitHub Copilot Modernization MCP в каждом репозитории.
Для приложений Java добавьте эту конфигурацию в раздел агента облачного программирования параметров репозитория:
{
"mcpServers": {
"app-modernization": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server"
]
}
}
}
Шаги
Запустите агент модернизации:
modernizeАгент обнаруживает
repos.jsonфайл и отображает список репозитория:Выберите репозитории для обновления и нажмите клавишу
Enter, чтобы подтвердить выбор.-
Нажмите
Ctrl+AДля выбора всех репозиториев. -
Или используйте клавиши со стрелками для навигации и нажатия
Enterклавиш, чтобы выбрать отдельные репозитории.
-
Нажмите
Выберите 2. Обновление из главного меню.
Чтобы запустить обновление, выберите 2. Делегировать агентам облачного программирования.
Агент автоматически:
Создает планы обновления для каждого репозитория.
Отправляет задание агента кодирования облака для каждого репозитория.
Выполняет задания независимо друг от друга в облаке.
Отображает идентификаторы заданий и URL-адреса PR для каждого репозитория.
Делегирует задачи агенту HQ для параллельного выполнения.
Отслеживает ход выполнения каждой отдельной задачи в режиме реального времени.
Отображает сводку по обновлению для каждой завершенной задачи.
Неинтерактивный режим (CLI)
Для автоматизации и интеграции CI/CD используйте modernize upgrade команду:
Обновление локально:
modernize upgrade "Java 21"
Обновление с помощью агентов облачного программирования:
modernize upgrade "Java 21" --delegate cloud
Команда автоматически обнаруживает repos.json файл и обрабатывает все репозитории.
Замечание
Сведения о пакетном выполнении в режиме без интерфейса и других параметрах командной строки см. в разделе «Конфигурация с несколькими репозиториями» в справочнике по командам CLI.
Просмотр результатов
После завершения пакетного обновления:
Проверьте агрегированный отчет, отображаемый в терминале.
Просмотрите изменения отдельного репозитория:
cd <repository-name> git status git diffСоздайте пулл-реквесты для успешных обновлений:
cd <repository-name> gh pr create --title "Upgrade to Java 21" --body "Automated upgrade by modernization agent"
Устранение неполадок пакетных обновлений
Распространенные проблемы
Ошибки доступа к репозиторию:
- Проверьте проверку подлинности GitHub с помощью
gh auth status. - Убедитесь, что у вас есть доступ ко всем репозиториям в
repos.json.
Ошибки несоответствия языка:
- Убедитесь, что во всех репозиториях в
repos.jsonиспользуется один и тот же язык (Java или .NET). - Создайте отдельные пакетные операции для разных языков.
Неудачи при клонировании:
- Проверьте правильность и доступность URL-адресов
repos.jsonрепозитория. - Убедитесь, что у вас есть надлежащие разрешения на доступ ко всем репозиториям.
- Проверьте параметры сетевого подключения и VPN.
Сбои сборки после обновления:
- Просмотрите сообщения об ошибках сборки в агрегированном отчете.
- Проверьте, нужно ли обновить другие зависимости.
- Проверьте совместимость сторонних библиотек с новой версией.
Сбои отдельных репозиторий:
- Пакетный процесс продолжается, даже если отдельные репозитории дают сбой.
- Просмотрите агрегированный отчет, чтобы определить неудачные репозитории.
- Проверьте журналы ошибок для определенных сообщений об ошибках.
- Повторная попытка завершилась сбоем репозиториев по отдельности.
Сбои агента программирования в облаке:
- Проверьте разрешения и ограничения квоты GitHub Actions.
- Для .NET Framework убедитесь, что конфигурация runner Windows настроена правильно.
Дальнейшие действия
После завершения пакетного обновления можно:
Продолжить улучшение:
- Выполните пакетную оценку — повторно проверьте улучшения и определите новые возможности.
- Создание пользовательских навыков для шаблонов, относящихся к организации, — запись успешных шаблонов для повторного использования.
Дополнительные сведения:
Предоставьте отзыв
Мы ценим ваши входные данные! Если у вас есть отзывы о пакетном обновлении или агенте модернизации, создайте проблему в репозитории github-copilot-appmod или используйте форму отзывов о модернизации GitHub Copilot.