Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
El agente de modernización admite varias maneras de especificar los repositorios que desea actualizar:
- Carpeta actual: actualice 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.
Sugerencia
En el caso de los repositorios de ejemplo, bifurquelos primero y asegúrese de que tiene permiso de administrador para delegar el trabajo en Agentes de codificación en la nube.
Formato simple (matriz de repositorios):
[
{
"name": "PhotoAlbum-Java",
"url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
},
{
"name": "ZavaSocialFrontEnd",
"url": "https://github.com/Azure-Samples/ZavaSocialFrontEnd"
}
]
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). | Sí |
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 |
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.
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.
- Admite: tanto la dirección URL de Git como los repositorios de rutas de acceso locales.
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 GitHub Agentes de codificación en la nube 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).
- Supports: solo repositorios con direcciones URL de GitHub (github.com). No se admiten rutas de acceso locales ni proveedores que no son de GitHub.
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 especificados con rutas de acceso locales o hospedados en proveedores que no son de GitHub (GitLab, Azure DevOps) se omiten durante la delegación en la nube. Use la ejecución local para esos repositorios.
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→ seleccionar Actualizar (interactivo, local) -
modernize→ seleccione Actualizar → Delegar a agentes en la nube (interactivo, en la nube) -
modernize upgrade "Java 21" --source ./repos.json(local no interactivo) -
modernize upgrade "Java 21" --source ./repos.json --delegate cloud(nube no interactiva)
Funcionamiento de la actualización por lotes
Flujo de trabajo de actualización por lotes:
- detección de Language: detecta automáticamente el lenguaje del proyecto (Java o .NET) del primer repositorio.
- Creación de plan: crea un plan de actualización basado en su mensaje o usa las versiones más recientes de LTS.
- Ejecución: aplica la actualización a cada repositorio.
- 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)
Ejecute el agente de modernización:
modernizeSeleccione Actualizar en el menú principal.
Elija cómo especificar los repositorios de destino. Seleccione Desde un archivo de configuración para usar un
repos.jsonarchivo.Sugerencia
También puede seleccionar Entrada manual para escribir rutas de acceso locales o direcciones URL remotas de Git directamente o carpeta actual para actualizar el proyecto en el directorio actual.
Si el
repos.jsonarchivo 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.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.
Elija el modo de ejecución. Seleccione Actualizar localmente.
Escriba el mensaje de destino de actualización (por ejemplo,
Java 21o.NET 10) o presione Enter para aceptar el valor predeterminado (versión ltS más reciente).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.
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 GitHub Copilot en cada repositorio.
Para aplicaciones Java, agregue esta configuración en la sección Agente de Cloud Coding de los ajustes del repositorio:
{
"mcpServers": {
"app-modernization": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server"
]
}
}
}
Pasos
Ejecute el agente de modernización:
modernizeSeleccione Actualizar en el menú principal.
Elija cómo especificar los repositorios de destino. Seleccione Desde un archivo de configuración.
Si el
repos.jsonarchivo 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.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.
Elija el modo de ejecución. Seleccione Delegar a Agentes de la Nube.
Escriba el mensaje de destino de actualización (por ejemplo,
Java 21) o presione Enter para aceptar el valor predeterminado.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.
Delega las tareas a AgentHQ para su ejecución en paralelo.
Realiza un seguimiento del progreso de cada tarea individual en tiempo real.
Muestra el resumen de actualización de cada tarea completada.
Modo no interactivo (CLI)
Para la automatización y la integración de CI/CD, use el modernize upgrade comando :
Actualice localmente mediante un archivo de configuración del repositorio:
modernize upgrade "Java 21" --source .github/modernize/repos.json
Actualice varios repositorios especificando orígenes directamente:
modernize upgrade "Java 21" --source https://github.com/org/repo1 --source https://github.com/org/repo2
Actualización mediante agentes de codificación en la nube:
modernize upgrade "Java 21" --source .github/modernize/repos.json --delegate cloud
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:
Compruebe el informe agregado que se muestra en el terminal.
Revise los cambios individuales del repositorio:
cd <repository-name> git status git diffCree 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 GitHub autenticación 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.jsonusen el mismo idioma (Java o .NET). - Cree operaciones por lotes independientes para distintos lenguajes.
Errores de clonación:
- Compruebe que las direcciones URL del repositorio en
repos.jsonson 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 de Acciones de GitHub y los límites de uso.
- Para .NET Framework, asegúrese de que la configuración del ejecutor de Windows esté correctamente configurada.
Pasos siguientes
Después de completar la actualización por lotes, puede hacer lo siguiente:
Continuar mejorando:
- Ejecución de la evaluación por lotes : vuelva a evaluar para comprobar las mejoras e identificar nuevas oportunidades.
- Crear habilidades personalizadas para patrones específicos de la organización - Capturar patrones exitosos para su reutilización.
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 GitHub Copilot.