Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакетное обновление позволяет одновременно применять согласованные планы модернизации в нескольких репозиториях. В этой статье показано, как эффективно обновлять несколько приложений в масштабе предприятия.
С помощью пакетного обновления можно:
- Одновременное обновление нескольких приложений с помощью одного целевого объекта обновления.
- Применение согласованных шаблонов с помощью аналогичных шаблонов обновления в приложениях.
- Используйте параллельное выполнение при делегировании в агенты облачного программирования.
Пакетное обновление обеспечивает следующие преимущества:
Согласованное выполнение:
- Стандартный подход: применение одинаковых шаблонов модернизации для всех репозиториев.
- Сокращение изменчивости: Обеспечьте единообразные пути обновления для аналогичных приложений.
- Повторяемые стратегии: использование навыков, специфичных для организации на разных платформах.
Масштабирование и эффективность:
- Параллельная обработка: используйте агенты облачного программирования для одновременной обработки нескольких репозиториев.
- Автоматизированные рабочие процессы: интеграция с конвейерами CI/CD для запланированной модернизации.
- Экономия времени: сокращение общего времени модернизации с недель до часов.
Необходимые условия
- Модернизация интерфейса командной строки.
- Завершенная пакетная оценка (рекомендуется, но не требуется).
- Все репозитории используют один и тот же язык программирования (Java или .NET).
- Доступ ко всем репозиториям, которые требуется обновить.
- Настроена аутентификация 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": "ZavaSocialFrontEnd",
"url": "https://github.com/Azure-Samples/ZavaSocialFrontEnd"
}
]
Полный формат (с ветвями и локальными путями):
{
"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 |
Описание, доступное для чтения человеком. | Нет |
Подсказка
Вы можете включить репозитории из разных организаций и использовать различные методы проверки подлинности до тех пор, пока у вас есть доступ.
Агент модернизации автоматически обнаруживает repos.json файл .github/modernize/repos.json, когда вы выбираете опцию Из файла конфигурации в интерактивном режиме. Можно также указать пользовательский путь.
Выбор режима выполнения
Пакетное обновление поддерживает два режима выполнения и два метода взаимодействия:
Режимы выполнения
Локальное выполнение
- Лучше всего: тестирование, небольшие наборы репозиториев (1–5 репозиториев) или при желании локального управления.
- Как это работает: обрабатывает репозитории последовательно на локальном компьютере.
- Требуется настройка: нет никаких предварительных требований.
- Поддерживает: как URL Git, так и локальные репозитории.
Делегирование агента кодирования облака
- Лучше всего: Операции корпоративного масштаба, крупные портфели (5+ репозиториев) или параллельные обработки.
- Как это работает: отправляет задачи облачным агентам кодирования GitHub для параллельного выполнения в облаке.
- Требуется настройка: конфигурация сервера MCP в каждом репозитории (настроенная во время установки).
- Supports: только репозитории с URL-адресами GitHub (github.com). Локальные пути и поставщики, отличные от GitHub, не поддерживаются.
Это важно
Делегирование агента облачного кодирования требует, чтобы репозитории имели URL-адреса репозиториев GitHub (github.com). Репозитории, указанные с локальными путями или размещенные у других поставщиков, кроме GitHub (GitLab, Azure DevOps), пропускаются во время облачного делегирования. Используйте локальное выполнение для этих репозиториев.
Подсказка
При параллельной обработке репозиториев делегирование агента облачного программирования может сократить общее время модернизации от часов до минут.
Методы взаимодействия
Интерактивный режим (TUI)
- Направляемый опыт работы с меню и подсказками.
- Лучше всего подходит для пользователей, использующих продукт впервые, или при необходимости ознакомиться с параметрами.
- Поддерживает локальное и облачное выполнение.
Неинтерактивный режим (CLI/headless)
- Система основана на командной строке и полностью автоматизированная.
- Оптимальный выбор для конвейеров CI/CD и автоматизации.
- Поддерживает как локальное, так и облачное выполнение с флагом
--delegate cloud.
Замечание
Вы можете объединить любой режим выполнения с любым методом взаимодействия. Рассмотрим пример.
-
modernize→ выберите "Обновить" (интерактивный, локальный) -
modernize→ выберите "Обновить" → "Делегировать облачным агентам" (интерактивные, облачные) -
modernize upgrade "Java 21" --source ./repos.json(неинтерактивный, локальный) -
modernize upgrade "Java 21" --source ./repos.json --delegate cloud(неинтерактивная, облачная)
Как работает пакетное обновление
Рабочий процесс пакетного обновления:
- Обнаружение языка: автоматически обнаруживает язык проекта (Java или .NET) в первом репозитории.
- Создание плана: создает план обновления на основе запроса или использует последние версии LTS.
- Выполнение: Применяет обновление к каждому репозиторию.
- Проверка: создает и проверяет изменения для каждого репозитория.
Запуск пакетного обновления
После настройки репозиториев и выбора режима выполнения запустите пакетное обновление.
Интерактивный режим (обновление локально)
Запустите агент модернизации:
modernizeВыберите "Обновить" в главном меню.
Выберите способ указания целевых репозиториев. Выберите из файла конфигурации , чтобы использовать
repos.jsonфайл.Подсказка
Вы также можете выбрать ручной ввод, чтобы ввести локальные пути или URL-адреса удаленных репозиториев Git напрямую, или текущую папку, чтобы обновить проект в текущем каталоге.
repos.jsonЕсли файл обнаружен в расположении по умолчанию, агент автоматически заполняет его. В противном случае введите путь к файлу конфигурации и нажмите клавишу ВВОД.По умолчанию выбраны все репозитории. Отмените выбор любых репозиториев, которые вы хотите пропустить, а затем нажмите клавишу ВВОД , чтобы подтвердить выбор.
- Используйте клавиши со стрелками для навигации и нажмите пробел для переключения отдельных репозиториев.
Выберите режим выполнения. Выберите "Обновить локально".
Введите целевой запрос обновления (например,
Java 21или.NET 10) или нажмите клавишу Enter, чтобы принять значение по умолчанию (последняя версия LTS).Агент автоматически:
- Создает план обновления на основе запроса.
- Применяет план к каждому репозиторию последовательно.
- Создает и проверяет каждый репозиторий после изменений.
- Отображает ход выполнения и сводку для каждого репозитория.
Интерактивный режим (делегирование в агенты облачного программирования)
Предварительные требования. Настройка сервера 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Если файл обнаружен в расположении по умолчанию, агент автоматически заполняет его. В противном случае введите путь к файлу конфигурации и нажмите клавишу ВВОД.По умолчанию выбраны все репозитории. Отмените выбор любых репозиториев, которые вы хотите пропустить, а затем нажмите клавишу ВВОД , чтобы подтвердить выбор. Используйте клавиши со стрелками для навигации и нажмите Пробел, чтобы переключить отдельные репозитории.
Выберите режим выполнения. Выберите Делегирование для облачных агентов.
Введите целевой запрос обновления (например,
Java 21) или нажмите клавишу Enter, чтобы принять значение по умолчанию.Агент автоматически:
Создает планы обновления для каждого репозитория.
Отправляет задание агента кодирования облака для каждого репозитория.
Выполняет задания независимо друг от друга в облаке.
Отображает идентификаторы заданий и URL-адреса PR для каждого репозитория.
Делегирует задачи агенту HQ для параллельного выполнения.
Отслеживает ход выполнения каждой отдельной задачи в режиме реального времени.
Отображает сводку по обновлению для каждой завершенной задачи.
Неинтерактивный режим (CLI)
Для автоматизации и интеграции CI/CD используйте modernize upgrade команду:
Обновление локально с помощью файла конфигурации репозитория:
modernize upgrade "Java 21" --source .github/modernize/repos.json
Обновите несколько репозиториев, указав источники напрямую:
modernize upgrade "Java 21" --source https://github.com/org/repo1 --source https://github.com/org/repo2
Обновление с помощью агентов облачного программирования:
modernize upgrade "Java 21" --source .github/modernize/repos.json --delegate cloud
Замечание
Сведения о пакетном выполнении в режиме без интерфейса и других параметрах командной строки см. в разделе «Конфигурация с несколькими репозиториями» в справочнике по командам 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 убедитесь, что конфигурация запуска Windows настроена правильно.
Дальнейшие действия
После завершения пакетного обновления можно:
Продолжить улучшение:
- Выполните пакетную оценку — повторно проверьте улучшения и определите новые возможности.
- Создание пользовательских навыков для шаблонов, относящихся к организации, — запись успешных шаблонов для повторного использования.
Дополнительные сведения:
Предоставьте отзыв
Мы ценим ваши входные данные! Если у вас есть отзывы о пакетном обновлении или агенте модернизации, откройте запрос в репозитории github-copilot-appmod или воспользуйтесь формой обратной связи GitHub Copilot о модернизации.