Поделиться через


Пакетное обновление с помощью агента модернизации GitHub Copilot

Пакетное обновление позволяет одновременно применять согласованные планы модернизации в нескольких репозиториях. В этой статье показано, как эффективно обновлять несколько приложений в масштабе предприятия.

С помощью пакетного обновления можно:

  • Одновременное обновление нескольких приложений с помощью одного целевого объекта обновления.
  • Применение согласованных шаблонов с помощью аналогичных шаблонов обновления в приложениях.
  • Используйте параллельное выполнение при делегировании в агенты облачного программирования.

Пакетное обновление обеспечивает следующие преимущества:

  • Согласованное выполнение:

    • Стандартный подход: применение одинаковых шаблонов модернизации для всех репозиториев.
    • Сокращение изменчивости: Обеспечьте единообразные пути обновления для аналогичных приложений.
    • Повторяемые стратегии: использование навыков, специфичных для организации на разных платформах.
  • Масштабирование и эффективность:

    • Параллельная обработка: используйте агенты облачного программирования для одновременной обработки нескольких репозиториев.
    • Автоматизированные рабочие процессы: интеграция с конвейерами CI/CD для запланированной модернизации.
    • Экономия времени: сокращение общего времени модернизации с недель до часов.

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

Это важно

Все репозитории в пакетном обновлении должны использовать один и тот же язык программирования. Если репозиторий использует другой язык, пакетное обновление помечает репозиторий как неудачный и пропускает его.

Настройка репозиториев

Чтобы включить пакетное обновление, создайте .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 (неинтерактивная, облачная)

Как работает пакетное обновление

Рабочий процесс пакетного обновления:

  1. Обнаружение языка: автоматически обнаруживает язык проекта (Java или .NET) из первого репозитория.
  2. Создание плана: создает план обновления на основе запроса или использует последние версии LTS.
  3. Выполнение: Применяет обновление к каждому репозиторию.
  4. Проверка: создает и проверяет изменения для каждого репозитория.

Запуск пакетного обновления

После настройки репозиториев и выбора режима выполнения запустите пакетное обновление.

Интерактивный режим (обновление локально)

  1. Запустите агент модернизации:

    modernize
    
  2. Агент обнаруживает repos.json файл и отображает список репозитория:

    Снимок экрана Modernize CLI, показывающий список

  3. Выберите репозитории для обновления и нажмите клавишу Enter , чтобы подтвердить выбор.

    • Нажмите Ctrl+A Для выбора всех репозиториев.
    • Или используйте клавиши со стрелками для навигации и нажатия Enter клавиш, чтобы выбрать отдельные репозитории.
  4. Выберите 2. Обновление из главного меню.

    Снимок экрана Modernize CLI, который показывает опцию меню «Обновить среду выполнения и платформу» в терминале.

  5. Чтобы запустить обновление, выберите 1. Обновление локально.

    Скриншот Modernize CLI, показывающий опцию в меню

  6. Агент автоматически:

    • Создает план обновления на основе запроса.
    • Применяет план к каждому репозиторию последовательно.
    • Создает и проверяет каждый репозиторий после изменений.
    • Отображает ход выполнения и сводку для каждого репозитория.

    Скриншот Modernize CLI, показывающий прогресс обновления каждого репозитория в терминале.

Интерактивный режим (делегирование в агенты облачного программирования)

Предварительные требования. Настройка сервера MCP

Перед запуском обновления настройте сервер GitHub Copilot Modernization MCP в каждом репозитории.

Для приложений Java добавьте эту конфигурацию в раздел агента облачного программирования параметров репозитория:

{
  "mcpServers": {
    "app-modernization": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "-y",
        "@microsoft/github-copilot-app-modernization-mcp-server"
      ]
    }
  }
}

Снимок экрана: GitHub, на котором показана область параметров агента кодирования репозитория с выделенным разделом конфигурации MCP.

Шаги

  1. Запустите агент модернизации:

    modernize
    
  2. Агент обнаруживает repos.json файл и отображает список репозитория:

    Снимок экрана Modernize CLI, показывающий список репозиториев в терминале.

  3. Выберите репозитории для обновления и нажмите клавишу Enter , чтобы подтвердить выбор.

    • Нажмите Ctrl+A Для выбора всех репозиториев.
    • Или используйте клавиши со стрелками для навигации и нажатия Enter клавиш, чтобы выбрать отдельные репозитории.
  4. Выберите 2. Обновление из главного меню.

  5. Чтобы запустить обновление, выберите 2. Делегировать агентам облачного программирования.

    Снимок экрана Modernize CLI, на котором показан пункт меню

  6. Агент автоматически:

    • Создает планы обновления для каждого репозитория.

    • Отправляет задание агента кодирования облака для каждого репозитория.

    • Выполняет задания независимо друг от друга в облаке.

    • Отображает идентификаторы заданий и URL-адреса PR для каждого репозитория.

      Снимок экрана Modernize CLI, показывающий процесс делегирования обновлений агентам облачного кодирования в терминале.

    • Делегирует задачи агенту HQ для параллельного выполнения.

      Снимок экрана: GitHub, на котором показана область

    • Отслеживает ход выполнения каждой отдельной задачи в режиме реального времени.

      Снимок экрана: GitHub, на котором показана область

    • Отображает сводку по обновлению для каждой завершенной задачи.

      Снимок экрана: GitHub, на котором показана панель

Неинтерактивный режим (CLI)

Для автоматизации и интеграции CI/CD используйте modernize upgrade команду:

Обновление локально:

modernize upgrade "Java 21"

Обновление с помощью агентов облачного программирования:

modernize upgrade "Java 21" --delegate cloud

Команда автоматически обнаруживает repos.json файл и обрабатывает все репозитории.

Замечание

Сведения о пакетном выполнении в режиме без интерфейса и других параметрах командной строки см. в разделе «Конфигурация с несколькими репозиториями» в справочнике по командам CLI.

Просмотр результатов

После завершения пакетного обновления:

  1. Проверьте агрегированный отчет, отображаемый в терминале.

  2. Просмотрите изменения отдельного репозитория:

    cd <repository-name>
    git status
    git diff
    
  3. Создайте пулл-реквесты для успешных обновлений:

    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.