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

La evaluación por lotes le permite analizar varias aplicaciones simultáneamente, lo que proporciona una vista completa del panorama de modernización en todas las aplicaciones. Este artículo le guía por el proceso de evaluación de varios repositorios de forma eficaz.

La evaluación por lotes es especialmente valiosa para el planeamiento de la migración, ya que permite evaluar de forma eficaz la preparación y los requisitos de varias aplicaciones a la vez. Mediante la evaluación por lotes, puede evaluar repositorios diferentes al mismo tiempo y obtener informes de evaluación detallados para cada aplicación. Genera dos tipos de informes para apoyar la planificación de la migración:

  • Informe por aplicación: proporciona información detallada sobre todos los problemas de modernización identificados en el nivel de repositorio individual.
  • informe Aggregated: presenta una perspectiva general de todas las aplicaciones evaluadas, ofreciendo información de resumen, recomendaciones sobre servicios Azure, plataformas de destino y rutas de actualización. Además, el informe agregado incluye accesos directos para facilitar el acceso a cada informe por aplicación.

La evaluación por lotes proporciona las siguientes ventajas:

  • Visibilidad entre aplicaciones:

    • Informes agregados: obtenga una vista completa de las aplicaciones.
    • Análisis entre repositorios: identifique patrones y dependencias comunes entre aplicaciones.
    • Información de priorización: comprenda qué aplicaciones necesitan atención inmediata.
  • 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 canalizaciones de CI/CD para evaluaciones programadas.
    • Ahorro de tiempo: reduzca el tiempo total de evaluación de semanas a horas.

Prerrequisitos

  • Modernización de la CLI.
  • Acceso a todos los repositorios que desea evaluar.
  • GitHub autenticación está configurada (gh auth login).

Configuración de repositorios

El agente de modernización admite varias maneras de especificar los repositorios que desea evaluar:

  • Carpeta actual: evalúe el proyecto en el directorio de trabajo actual.
  • Entrada manual: escriba directamente rutas de acceso de directorio local o direcciones URL de Git remotas.
  • Archivo de configuración del repositorio: use un archivo de configuración JSON que muestre todos los repositorios.

Archivo de configuración del repositorio

Para las operaciones por lotes en muchos repositorios, cree un archivo de configuración JSON para enumerar todos los repositorios. Por ejemplo, créelo en .github/modernize/repos.json en el directorio de trabajo o proporcione una ruta de acceso personalizada.

Asegúrese de tener los permisos adecuados para los repositorios o bifurcarlos.

Formato simple (matriz de repositorios):

[
  {
    "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"
  }
]

Formato completo (con rutas de acceso locales y de rama):

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "local-project",
      "path": "/absolute/path/to/project"
    }
  ]
}

Cada entrada del repositorio admite los siguientes campos:

Campo Descripción Obligatorio
name Un nombre amigable para el repositorio (usado en informes y tableros).
url Dirección URL de clonación de Git en formato HTTPS o SSH. Uno de url o path
path Ruta de acceso absoluta del directorio local. Uno de url o path
branch Bifurcación que se va a consultar después de la clonación. No
description Descripción legible para humanos. No

Formato completo con la agrupación de aplicaciones (opcional, para informes organizados):

Puede agregar una apps[] sección para agrupar repositorios en aplicaciones lógicas. Cuando se definen las aplicaciones, el informe agregado organiza los resultados por aplicación y admite la distribución de informes a destinos externos.

{
  "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"
      }
    }
  ]
}

Cada entrada de la aplicación admite:

Campo Descripción Obligatorio
identifier Nombre único para mostrar de la aplicación.
description Descripción legible para humanos. No
repos Lista de nombres de repositorio que pertenecen a esta aplicación.
output Dónde distribuir el informe de evaluación de esta aplicación una vez generado. No

El output campo admite los siguientes tipos de distribución:

Tipo Descripción Campos obligatorios
local Copie informes en un directorio local. path
git Insertar informes en un repositorio de Git. El formato de dirección URL es https://github.com/org/repo.git#branch:path. url

Sugerencia

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

El agente de modernización detecta automáticamente el archivo repos.json en .github/modernize/repos.json al seleccionar De un archivo de configuración en modo interactivo. También puede proporcionar una ruta de acceso personalizada.

Ejecución de la evaluación por lotes

Hay dos modos de ejecución disponibles:

  • Ejecución local: El agente de modernización procesa los repositorios uno tras otro en el equipo local. Este modo funciona mejor para un conjunto más pequeño de aplicaciones o para pruebas iniciales. Admite la dirección URL de Git y los repositorios de rutas de acceso locales.
  • Delegación del Agente de Codificación en la Nube: El Agente de Modernización envía tareas a los Agentes de Codificación en la Nube de GitHub para el procesamiento paralelo en la nube. Este modo es más rápido para escenarios de varios repositorios.

Importante

La delegación del agente de codificación en la nube requiere que los repositorios tengan direcciones URL de repositorio GitHub (github.com). Los repositorios de rutas de acceso locales y los proveedores que no son de GitHub (GitLab, Azure DevOps) no se admiten para la delegación en la nube. Use la ejecución local para esos repositorios.

Sugerencia

Mediante el uso de la delegación del Agente de codificación en la nube, se habilita la ejecución en paralelo en todos los repositorios. Este enfoque reduce significativamente el tiempo total de evaluación de las carteras grandes.

Modo interactivo (evaluar localmente)

  1. Ejecute el agente de modernización:

    modernize
    
  2. Seleccione Evaluar en el menú principal.

    Captura de pantalla de Modernize CLI que muestra el menú principal con la opción Evaluar en la terminal.

  3. Elija cómo especificar los repositorios de destino. Seleccione Desde un archivo de configuración para usar un repos.json archivo.

    Captura de pantalla de Modernize CLI que muestra la selección del tipo de origen en el terminal.

    Sugerencia

    También puede seleccionar Entrada manual para escribir rutas de acceso locales o direcciones URL remotas de Git directamente o carpeta actual para evaluar el proyecto en el directorio actual.

  4. Si el repos.json archivo se detecta en la ubicación predeterminada, el agente lo rellena automáticamente. De lo contrario, escriba la ruta de acceso al archivo de configuración y presione Entrar.

  5. Todos los repositorios se seleccionan de forma predeterminada. Anule la selección de los repositorios que quiera omitir y presione Entrar para confirmar la selección.

    • Use las teclas de dirección para navegar y presionar Espacio para alternar repositorios individuales.

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

  6. Elija el modo de ejecución. Seleccione Evaluar localmente.

    Captura de pantalla de Modernize CLI que muestra el menú del modo de evaluación en la terminal.

  7. Seleccione los dominios de evaluación que se van a analizar. Elija entre Java upgrade y Cloud Readiness y presione Enter.

    Captura de pantalla de Modernize CLI que muestra la selección de dominio de evaluación en el terminal.

  8. Revise y configure las opciones de evaluación. En la página de configuración se muestran las opciones agrupadas por idioma y dominio:

    • Java / GENERAL: Cobertura de análisis (solo problemas, problemas y tecnologías, o problemas, tecnologías y dependencias).
    • Java /JAVA UPGRADE: Tiempo de ejecución de destino (OpenJDK 11, 17 o 21).
    • Java / PREPARACIÓN PARA LA NUBE: Servicios de Cómputo Objetivo, Sistema Operativo Objetivo y Contenerización.
    • .NET/CLOUD READINESS: Target Compute Services.

    Use las teclas de dirección para navegar, presione Entrar para cambiar un valor o seleccione Continuar para continuar con la configuración actual.

    Captura de pantalla de Modernize CLI que muestra la página de configuración de evaluación en el terminal.

    Sugerencia

    Los valores predeterminados recomendados funcionan para la mayoría de los escenarios. Solo tiene que cambiar esta configuración si tiene requisitos específicos, como tener como destino una versión de JDK determinada o Azure servicio de proceso.

  9. Escriba la ruta de acceso de salida para los resultados de la evaluación o presione Entrar para aceptar el valor predeterminado.

  10. El agente actúa automáticamente:

    • Clona repositorios remotos y usa directamente los de ruta de acceso local.

    • Ejecuta la evaluación en cada repositorio uno por uno.

    • Genera informes de evaluación individuales.

      Captura de pantalla de Modernize CLI que muestra la generación de la salida de informes de evaluación individual en el terminal.

    • Crea un informe agregado.

      Captura de pantalla de Modernize CLI que muestra la salida de la generación del informe agregado en el terminal.

  11. Cuando finalice la evaluación, el agente abre automáticamente el informe agregado.

    Captura de pantalla de Modernize CLI que muestra el contenido del informe agregado.

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

En primer lugar, configure Cloud Coding Agents en cada repositorio de aplicaciones. Para configurar agentes de codificación en la nube, bifurque los repositorios de ejemplo.

Configuración de aplicaciones de .NET

Configuración para ejecutarse en Windows para aplicaciones de .NET Framework

De forma predeterminada, el agente de codificación de Copilot se ejecuta en un entorno de Ubuntu Linux. Para las aplicaciones .NET Framework, necesita un entorno de Windows. Para habilitarlo, configure .github/workflows/copilot-setup-steps.yaml en la main rama del repositorio de aplicaciones, como se muestra en el ejemplo siguiente:

# 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

Obtenga más información en: Personalización del entorno de desarrollo de Copilot con los pasos de configuración de Copilot

Disable firewall (Deshabilitar firewall)

Desactive el firewall integrado del agente de codificación de Copilot en la configuración del repositorio, como se muestra en la siguiente imagen:

Screenshot de GitHub que muestra la configuración del repositorio con la opción Habilitar firewall establecida en Off.

Configuración de aplicaciones de Java

Configura el GitHub Copilot MCP Server de Modernización en la sección de Agente de Codificación en la Nube de las configuraciones de tu repositorio, como se muestra en el ejemplo siguiente:

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

Captura de pantalla de GitHub que muestra la 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. Seleccione Evaluar en el menú principal.

    Captura de pantalla de Modernize CLI que muestra el menú principal con la opción Evaluar en la terminal.

  3. Elija cómo especificar los repositorios de destino. Seleccione De un archivo de configuración para usar un archivo repos.json, o seleccione Entrada manual para introducir directamente las direcciones URL de los repositorios de GitHub.

    Captura de pantalla de Modernize CLI que muestra la selección del tipo de origen en el terminal.

  4. Si seleccionó En un archivo de configuración y el repos.json archivo se detecta en la ubicación predeterminada, el agente lo rellena automáticamente. De lo contrario, escriba la ruta de acceso al archivo de configuración y presione Entrar.

  5. Todos los repositorios se seleccionan de forma predeterminada. Anule la selección de los repositorios que quiera omitir y presione Entrar para confirmar la selección.

    • Use las teclas de dirección para navegar y presionar Espacio para alternar repositorios individuales.

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

  6. Elija el modo de ejecución. Seleccione Delegar en Agentes de la Nube.

    Captura de pantalla de Modernize CLI que muestra el menú de evaluación con la opción Delegar en Agentes de Codificación en la Nube seleccionada.

    Nota:

    Al delegar en Cloud Coding Agents, no se admiten los pasos de configuración de selección y evaluación del dominio. El agente en la nube usa las configuraciones predeterminadas para ejecutar la evaluación.

  7. Escriba la ruta de acceso de salida para los resultados de la evaluación o presione Entrar para aceptar el valor predeterminado.

  8. El agente delega automáticamente las tareas de evaluación de cada repositorio en Cloud Coding Agents y las ejecuta en la nube en paralelo.

    Captura de pantalla de Modernizar CLI que muestra el resultado del progreso de la delegación de la evaluación a Agentes de Codificación en la Nube en el terminal.

    El agente vuelve a extraer los resultados de la evaluación por aplicación en local y genera el informe agregado localmente.

    Captura de pantalla de Modernize CLI que muestra la agregación de informes de evaluación en el terminal.

  9. Cuando finalice la evaluación, el agente abre automáticamente el informe agregado.

Modo no interactivo (CLI)

También puede usar el modo no interactivo especificando los argumentos de comando directamente. Use el comando modernize assess:

Evaluar localmente mediante un archivo de configuración del repositorio:

modernize assess --source .github/modernize/repos.json

Evalúe varios repositorios especificando orígenes directamente:

modernize assess --source https://github.com/org/repo1 --source https://github.com/org/repo2

Evalúe mediante la delegación a agentes de codificación en la nube:

modernize assess --source .github/modernize/repos.json --delegate cloud --wait

Para más información, consulte evaluación: comandos de la CLI.

Descripción del informe agregado

El informe agregado proporciona una vista completa de las aplicaciones evaluadas de la siguiente manera:

Panel de control

  • Instantánea del estado de la cartera: total de aplicaciones, cuántas necesitan actualizaciones y recuentos agregados de bloqueadores y problemas.
  • Distribución de tecnología: qué marcos de trabajo están en uso y cuántas aplicaciones las comparten.
  • Distribución del esfuerzo: si la migración general es una tarea pequeña o grande.

Recomendaciones

  • Azure Services: asigna las dependencias actuales a los equivalentes recomendados Azure. Las dependencias compartidas entre aplicaciones se deciden de manera centralizada, lo que evita la redundancia de trabajo en cada aplicación.
  • Plataforma de destino: guía la elección de hospedaje, como Azure Container Apps frente a AKS, y expone las oportunidades de consolidación.
  • Ruta de actualización: identifica qué aplicaciones necesitan actualizaciones de marco como requisito previo, separando el trabajo de actualización del trabajo de migración.
  • Oleadas de migración: secuencia las aplicaciones por preparación y riesgo en fases. Este enfoque permite ganar temprano mientras las aplicaciones más difíciles se preparan en paralelo.

Matriz de evaluación de aplicaciones

  • Información general rápida para cada aplicación sobre aspectos del marco de trabajo, la plataforma de destino, la recomendación de actualización, el desglose de problemas (obligatorio, potencial, opcional), el tamaño del esfuerzo, etc.
  • Vínculos a informes de aplicaciones individuales para explorar en profundidad cuando sea necesario.

Solución de problemas de evaluación por lotes

Problemas comunes

Errores de acceso al repositorio:

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

Errores de clonación:

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

Errores de evaluación:

  • Compruebe si el repositorio contiene proyectos de Java o .NET válidos.
  • Compruebe que existen archivos de compilación, como pom.xml, build.gradle, *.csproj, *.slno *.slnx.
  • Revise los mensajes de error en la salida de la consola.

Problemas de delegación del agente de codificación en la nube:

  • Asegúrese de que tiene los permisos adecuados para crear flujos de trabajo de Acciones de GitHub.
  • Compruebe Acciones de GitHub permisos y límites de cuota para su organización.
  • Para aplicaciones de .NET Framework, asegúrese de que la configuración del ejecutor de Windows esté correctamente establecida.
  • Compruebe la configuración del servidor MCP.

Pasos siguientes

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

Continúe con el flujo de trabajo de modernización:

Más información:

Enviar comentarios

¡Valoramos su entrada! Si tiene algún comentario sobre la evaluació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 GitHub Copilot.