Compartir a través de


Actualización por lotes con el agente de modernización de GitHub Copilot

La actualización por lotes le permite aplicar planes de modernización coherentes en varios repositorios simultáneamente. En este artículo se muestra cómo actualizar varias aplicaciones de forma eficaz a escala empresarial.

Mediante la actualización por lotes, puede hacer lo siguiente:

  • Actualice varias aplicaciones simultáneamente mediante el mismo destino de actualización.
  • Aplique patrones coherentes mediante patrones de actualización similares entre aplicaciones.
  • Aproveche la ejecución en paralelo al delegar en agentes de codificación en la nube.

La actualización por lotes proporciona las siguientes ventajas:

  • Ejecución coherente:

    • Enfoque estandarizado: aplique los mismos patrones de modernización en todos los repositorios.
    • Variabilidad reducida: garantice rutas de actualización coherentes para aplicaciones similares.
    • Estrategias reutilizables: use aptitudes específicas de la organización en todas las aplicaciones.
  • Escala y eficiencia:

    • Procesamiento paralelo: use agentes de codificación en la nube para procesar varios repositorios simultáneamente.
    • Flujos de trabajo automatizados: se integran con las canalizaciones de CI/CD para la modernización programada.
    • Ahorro de tiempo: reduzca el tiempo total de modernización de semanas a horas.

Prerrequisitos

  • Modernización de la CLI.
  • Una evaluación por lotes completada (recomendada, pero no necesaria).
  • Todos los repositorios usan el mismo lenguaje de programación (Java o .NET).
  • Acceso a todos los repositorios que desea actualizar.
  • Autenticación de GitHub configurada (gh auth login).

Importante

Todos los repositorios de una actualización por lotes deben usar el mismo lenguaje de programación. Si un repositorio usa un idioma diferente, la actualización por lotes marca el repositorio como con errores y la omite.

Configuración de repositorios

Para habilitar la actualización por lotes, cree un .github/modernize/repos.json archivo en el directorio de trabajo que muestre todos los repositorios que desea actualizar.

Sugerencia

Asegúrese de que tiene los permisos adecuados para acceder a los repositorios o bifurcarlos primero.

[
  {
    "name": "PhotoAlbum-Java",
    "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
  },
  {
    "name": "ZavaSocialFrontEnd",
    "url": "https://github.com/bradygaster/ZavaSocialFrontEnd"
  }
]

Configuración del repositorio

Cada entrada requiere:

  • name: un nombre descriptivo para el repositorio (que se usa en informes y paneles).
  • url: la dirección URL de clonación de Git (formato HTTPS).

Sugerencia

Puede incluir repositorios de diferentes organizaciones y usar distintos métodos de autenticación siempre que tenga acceso.

Ubicación del archivo

Debe colocar el archivo repos.json en .github/modernize/repos.json.

El agente de modernización detecta automáticamente este archivo al ejecutar operaciones por lotes.

Elegir el modo de ejecución

La actualización por lotes admite dos modos de ejecución y dos métodos de interacción:

Modos de ejecución

Ejecución local

  • Ideal para: Probar, conjuntos más pequeños de repositorios (repositorios de 1 a 5) o cuando se prefiere el control local.
  • Funcionamiento: procesa repositorios secuencialmente en la máquina local.
  • Configuración necesaria: ninguna aparte de los requisitos previos básicos.

Delegación del agente de codificación en la nube

  • Ideal para: operaciones a escala empresarial, carteras grandes (5+ repositorios) o procesamiento paralelo.
  • Cómo funciona: envía tareas a Los agentes de codificación en la nube de GitHub para su ejecución en paralelo en la nube.
  • Configuración necesaria: configuración del servidor MCP en cada repositorio (configurado durante la instalación).

Sugerencia

Al procesar repositorios en paralelo, la delegación del agente de codificación en la nube puede reducir el tiempo total de modernización de horas a minutos.

Métodos de interacción

Modo interactivo (TUI)

  • Experiencia guiada con menús y avisos.
  • Lo mejor para los usuarios por primera vez o cuando quiera revisar las opciones.
  • Admite la ejecución local y en la nube.

Modo no interactivo (CLI/sin encabezado)

  • Basada en línea de comandos, totalmente automatizada.
  • Mejor para canalizaciones y automatización de CI/CD.
  • Admite la ejecución local y en la nube con el indicador --delegate cloud.

Nota:

Puede combinar cualquier modo de ejecución con cualquier método de interacción. Por ejemplo:

  • modernize (interactivo, local)
  • modernize → seleccionar Agentes de codificación en la nube (interactivos, en la nube)
  • modernize upgrade "Java 21" (no interactivo, local)
  • modernize upgrade "Java 21" --delegate cloud (no interactivo, nube)

Funcionamiento de la actualización por lotes

Flujo de trabajo de actualización por lotes:

  1. Detección de idioma: detecta automáticamente el lenguaje del proyecto (Java o .NET) desde el primer repositorio.
  2. Creación de plan: crea un plan de actualización basado en su mensaje o usa las versiones más recientes de LTS.
  3. Ejecución: aplica la actualización a cada repositorio.
  4. Validación: compila y valida los cambios de cada repositorio.

Ejecución de la actualización por lotes

Después de configurar los repositorios y elegir un modo de ejecución, inicie la actualización por lotes.

Modo interactivo (actualización local)

  1. Ejecute el agente de modernización:

    modernize
    
  2. El agente detecta el repos.json archivo y muestra la lista de repositorios:

    Captura de pantalla de Modernize CLI que muestra la lista

  3. Seleccione repositorios para actualizar y presione Enter para confirmar la selección.

    • Presione Ctrl+A para seleccionar todos los repositorios.
    • O bien, use las teclas de dirección para navegar y presionar Enter para seleccionar repositorios individuales.
  4. Seleccione 2. Actualice desde el menú principal.

    Captura de pantalla de Modernize CLI que muestra la opción de menú Actualizar Runtime y Framework en el terminal.

  5. Para ejecutar la actualización, seleccione 1. Actualice localmente.

    Captura de pantalla de Modernize CLI que muestra la opción de menú Upgrade locally en la terminal.

  6. El agente actúa automáticamente:

    • Crea un plan de actualización basado en la solicitud.
    • Aplica el plan a cada repositorio secuencialmente.
    • Compila y valida cada repositorio después de los cambios.
    • Muestra el progreso y el resumen de cada repositorio.

    Captura de pantalla de modernizar la CLI que muestra el progreso de la actualización de cada repositorio en el terminal.

Modo interactivo (delegación a agentes de codificación en la nube)

Requisitos previos: Configuración del servidor MCP

Antes de ejecutar la actualización, configure el servidor MCP de modernización de Copilot de GitHub en cada repositorio.

Para las aplicaciones Java, agregue esta configuración en la sección Agente de codificación en la nube de la configuración del repositorio:

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

Captura de pantalla de GitHub que muestra el panel configuración del agente de codificación del repositorio con la sección configuración de MCP resaltada.

Pasos

  1. Ejecute el agente de modernización:

    modernize
    
  2. El agente detecta el repos.json archivo y muestra la lista de repositorios:

    Captura de pantalla de Modernize CLI que muestra la lista de repositorios en la terminal.

  3. Seleccione repositorios para actualizar y presione Enter para confirmar la selección.

    • Presione Ctrl+A para seleccionar todos los repositorios.
    • O bien, use las teclas de dirección para navegar y presionar Enter para seleccionar repositorios individuales.
  4. Seleccione 2. Actualice desde el menú principal.

  5. Para ejecutar la actualización, seleccione 2. Delegar en agentes de codificación en la nube.

    Captura de pantalla de la CLI de Modernización que muestra la opción de menú Delegar a agentes de codificación en la nube en el terminal.

  6. El agente actúa automáticamente:

    • Crea planes de actualización para cada repositorio.

    • Envía una tarea del Agente de Codificación en la Nube para cada repositorio.

    • Ejecuta trabajos de forma independiente en paralelo en la nube.

    • Muestra los identificadores de trabajo y las direcciones URL de solicitud de incorporación de cambios para cada repositorio.

      Captura de pantalla de modernización de la CLI que muestra el progreso de delegación de actualizaciones a agentes de codificación en la nube en el terminal.

    • Delega las tareas a AgentHQ para su ejecución en paralelo.

      Captura de pantalla de GitHub que muestra el panel Agentes con las tareas de actualización delegadas en AgentHQ.

    • Realiza un seguimiento del progreso de cada tarea individual en tiempo real.

      Captura de pantalla de GitHub que muestra el panel Agentes con seguimiento de progreso para tareas individuales de actualización del agente de codificación en la nube.

    • Muestra el resumen de actualización de cada tarea completada.

      Captura de pantalla de GitHub que muestra el panel Agentes con el resumen de actualización de tareas individuales del Agente de codificación en la nube.

Modo no interactivo (CLI)

Para la automatización y la integración de CI/CD, use el modernize upgrade comando :

Actualizar localmente:

modernize upgrade "Java 21"

Actualización mediante agentes de codificación en la nube:

modernize upgrade "Java 21" --delegate cloud

El comando detecta automáticamente el repos.json archivo y procesa todos los repositorios.

Nota:

Para ver la ejecución sin encabezado por lotes y más opciones de la CLI, consulte la sección Configuración de varios repositorios en la referencia de comandos de la CLI.

Revisión de los resultados

Cuando finalice la actualización por lotes:

  1. Compruebe el informe agregado que se muestra en el terminal.

  2. Revise los cambios individuales del repositorio:

    cd <repository-name>
    git status
    git diff
    
  3. Cree pull requests para actualizaciones exitosas:

    cd <repository-name>
    gh pr create --title "Upgrade to Java 21" --body "Automated upgrade by modernization agent"
    

Solución de problemas de actualizaciones por lotes

Problemas comunes

Errores de acceso al repositorio:

  • Compruebe la autenticación de GitHub mediante gh auth status.
  • Asegúrese de que tiene acceso a todos los repositorios de repos.json.

Errores de coincidencia de idioma:

  • Asegúrese de que todos los repositorios de repos.json usan el mismo lenguaje (Java o .NET).
  • Cree operaciones por lotes independientes para distintos lenguajes.

Errores de clonación:

  • Compruebe que las direcciones URL del repositorio en repos.json son correctas y accesibles.
  • Asegúrese de que tiene permisos de acceso adecuados para todos los repositorios.
  • Compruebe la conectividad de red y la configuración de VPN.

Errores de compilación después de la actualización:

  • Revise los mensajes de error de compilación en el informe consolidado.
  • Compruebe si necesita actualizar otras dependencias.
  • Compruebe la compatibilidad de bibliotecas de terceros con la nueva versión.

Errores de repositorio individuales:

  • El proceso por lotes continúa incluso si se produce un error en los repositorios individuales.
  • Revise el informe agregado para identificar repositorios con errores.
  • Compruebe los registros de errores para ver mensajes de error específicos.
  • Vuelva a intentar individualmente los repositorios que han fallado.

Errores del agente de codificación en la nube:

  • Compruebe los permisos y los límites de cuota de Acciones de GitHub.
  • Para .NET Framework, asegúrese de que la configuración del ejecutor de Windows esté establecida correctamente.

Pasos siguientes

Después de completar la actualización por lotes, puede hacer lo siguiente:

Continuar mejorando:

Más información:

Enviar comentarios

¡Valoramos su entrada! Si tiene algún comentario sobre la actualización por lotes o el agente de modernización, cree un problema en el repositorio github-copilot-appmod o use el formulario de comentarios de modernización de GitHub Copilot.