Personalización del plan de modernización al usar la modernización de GitHub Copilot

En este artículo se describe cómo personalizar el plan de modernización generado por GitHub Copilot modernization para la migración de aplicaciones Java y .NET a Azure.

Puede iniciar una sesión de modernización creando un plan en el informe de evaluación a través de problemas de selección múltiple o haciendo clic en Migrar a Azure para crear y ejecutar un plan de modernización desde la barra lateral. Al iniciar una sesión de modernización, GitHub Copilot genera un archivo plan.md (y un archivo complementario .metadata/tasks.json) que describe el objetivo de migración, el ámbito, la arquitectura actual y de destino y la lista de tareas. Este par de archivos actúa como plano técnico que ejecuta el agente de modernización. Puede refinar el plan antes de la ejecución para ajustarse mejor a las necesidades del proyecto.

Una vez que el agente genera plan.md, se abre automáticamente en el editor de Visual Studio Code. En esta fase, puede revisar y personalizar el plan para asegurarse de que se alinea con sus objetivos de modernización específicos.

Importante

Personalice el plan pidiéndole a Copilot que lo vuelva a generar o actualizar en lugar de editar plan.md manualmente directamente. Las modificaciones directas en plan.md no actualizan el archivo complementario tasks.json que controla la ejecución, y los dos archivos pueden dejar de estar sincronizados. El patrón recomendado en todas las secciones siguientes es "indicarle a Copilot qué cambiar y, a continuación, dejar que lo regenere".

Estructura de archivo ejemplo plan.md

El agente genera un archivo plan.md con las secciones siguientes. La misma estructura se usa para proyectos de Java y .NET.

Section Purpose Personalizable mediante instrucciones
Encabezado del proyecto Nombre del proyecto y título de modernización. Sí: ajuste el título para reflejar la onda o el ámbito.
Marco técnico Lenguaje actual, marco, herramienta de compilación, base de datos y dependencias de clave, detectados desde el código fuente. Indirectamente: corrija los datos detectados erróneamente dando instrucciones a Copilot.
Overview Descripción narrativa del objetivo de modernización: lo que está cambiando, por qué y el enfoque por fases. Orientado al negocio, sin detalles técnicos. Sí: aclarar la intención empresarial, agregar o quitar viñetas.
Resumen del impacto de la migración Una tabla que asigna cada aplicación × servicio original → nuevo servicio de Azure, método de autenticación y comentarios. Sí: cambie el servicio de destino, cambie la autenticación, agregue o quite filas.
Preguntas y cuestionarios abiertos Preguntas de aclaración planteadas durante la creación del plan y las respuestas del usuario. Determina la selección de tareas. Sí: responda a preguntas abiertas, revise las respuestas anteriores.

La lista de tareas detallada no está en plan.md. Reside en .metadata/tasks.json y se genera a partir de sus respuestas en la sección Preguntas abiertas y cuestionario más el análisis del agente. Para cambiar las tareas, solicite Copilot volver a generar el plan (consulte Cómo personalizar).

Lo que puedes personalizar

El plan de modernización expone cuatro superficies de personalización. Cada uno corresponde a una sección de plan.md y se accede a ella mediante una instrucción a Copilot en lugar de mediante una edición directa.

1. Ámbito de modernización

El ámbito determina qué tipos de tareas genera el agente. El plan admite cuatro tipos de ámbito:

  • Upgrade: actualizaciones de versión en tiempo de ejecución y marco (por ejemplo, JDK 11 → 17, Spring Boot 2.x → 3.x, .NET Framework → .NET 8).
  • Migración a Azure — sustitución de un servicio local o ajeno a Azure por su equivalente en Azure (por ejemplo, Oracle → Azure Database for PostgreSQL, ActiveMQ → Azure Service Bus, secretos codificados de forma fija → Azure Key Vault).
  • Contenedorización : generación de un Dockerfile y artefactos de compilación relacionados.
  • Deployment: generar archivos de implementación e implementar en Azure. Las tareas de implementación incluyen la contenedorización implícitamente.

Para personalizar el ámbito, indique Copilot qué tipos de ámbito se aplican a esta ejecución. Por ejemplo:

For this modernization plan, only include Upgrade and Migration to Azure tasks. Do not generate containerization or deployment tasks — those are handled by a separate pipeline.

2. Servicios de Azure de destino y autenticación

La tabla Migration Impact Summary registra el servicio Azure de destino y el método de autenticación para cada componente migrado. Personalice estos valores indicándole a Copilot antes o después de que se genere el plan inicial. Por ejemplo:

Update the Migration Impact Summary:
- Use Azure Container Apps as the deployment target, not Azure Kubernetes Service.
- Use Managed Identity for the PostgreSQL connection. Do not use Key Vault for the DB password.
- Migrate file-based logging to Azure Monitor (Application Insights), not to console-only.

El agente vuelve a generar tanto plan.md como tasks.json para que la lista de tareas se mantenga coherente con la tabla.

3. Respuestas al cuestionario

Cuando el agente tiene la ask_user funcionalidad disponible, solicita un breve cuestionario para definir el ámbito del plan. Las tres preguntas predeterminadas son:

Question Respuesta predeterminada Efecto en el plan
Destino de implementación en Azure Sin implementación Agrega (o omite) una tarea de implementación y selecciona el servicio de proceso de destino (Azure Container Apps, Azure Kubernetes Service, Azure App Service, App Service Instancia administrada, Azure Function Apps, Azure Static Web Apps).
¿Incluye pruebas de integración? No Cuando se establece en "Sí, Integración local con contenedores" o "Sí, Integración local y pruebas de humo", agrega una tarea de prueba de integración después de las tareas de migración y antes de la contenedorización.
¿Incluye la inclusión de contenedores (generación de Dockerfile)? No Agrega una tarea de contenedorización independiente. Se omite automáticamente si se selecciona una tarea de implementación, ya que la implementación cubre la contenedorización.

Si el agente no hizo una pregunta (por ejemplo, porque ask_user no estaba disponible) o desea cambiar una respuesta anterior, solicite Copilot. Por ejemplo:

Update the plan with these answers:
- Deployment target: Azure Container Apps
- Integration testing: Yes, Local Integration and Smoke Tests
- Containerization: handled by deployment task, no standalone containerization needed

Las respuestas quedan registradas como elementos marcados en la sección Preguntas abiertas y cuestionario y determinan la selección de tareas.

4. Agregar, quitar o refinar tareas específicas

Puede pedirle a Copilot que añada una tarea que no se haya generado, elimine una tarea que no desee o ajuste el ámbito de una tarea existente. Formule la solicitud con la intención — deje que Copilot elija la habilidad y el patrón adecuados de su base de conocimientos.

Ejemplos:

Add a task to migrate from ActiveMQ to Azure Service Bus.
Drop the integration test task — we have an existing test suite that covers this.
The Spring Boot upgrade task should target Spring Boot 3.2 specifically, not "latest".

Note

El agente solo crea tareas para las migraciones para las que tiene una aptitud o patrón coincidente. Si solicita una migración que el agente no puede compatibilizar (por ejemplo, un servicio propietario interno), se añade una advertencia a la sección de alcance y la tarea no se añade. En ese caso, trate la migración como un paso manual y agregue una instrucción Guidelines (consulte la sección siguiente) para documentarla.

Cómo personalizar: pedir a Copilot que regenere

Use el flujo de trabajo siguiente:

  1. Revise la versión inicial plan.md después de que el agente la genere.
  2. Identifique lo que desea cambiar: ámbito, servicio de destino, autenticación, respuestas de cuestionario o tareas específicas.
  3. Indica a Copilot el cambio. Ser específico: asigne un nombre a la sección y el resultado deseado.
  4. Permita que Copilot regenere plan.md y .metadata/tasks.json juntos. Ambos archivos deben mantenerse alineados para que funcione la ejecución.
  5. Vuelva a revisar el plan actualizado. Itera hasta que el ámbito, la arquitectura de destino y la lista de tareas coincidan con la intención.

Ejemplo de solicitud de un extremo a otro:

Update the modernization plan with these changes:
1. Add Migration to Azure scope for messaging — migrate ActiveMQ to Azure Service Bus.
2. Use Managed Identity for all Azure service connections; do not introduce Key Vault.
3. Deployment target is Azure Container Apps.
4. Include Layer 1 and Layer 2 integration tests.
5. The Spring Boot upgrade task should explicitly include the JDK 17 and Jakarta EE migration in its description, as a single task (do not split).

Copilot regenera el plan, actualiza la tabla, registra las respuestas del cuestionario y revisa la lista de tareas en consecuencia.

Proporcionar instrucciones para la ejecución

Además del alcance y las tareas, proporcione a Copilot directrices —metodología, convenciones, herramientas y reglas— que rijan la forma en que se lleva a cabo la modernización. Añada directrices normalmente como una sección Guidelines del plan o como referencias a archivos de reglas locales.

Incluya las instrucciones que ayuden a dirigir la forma en que Copilot modifica el código, como:

  • Restricciones o prohibiciones sobre ciertos enfoques de migración (por ejemplo, no introduzca los starters de Spring Cloud Azure; use los SDK nativos).
  • Requisitos de estilo de código o convención.
  • Vínculos a archivos internos, documentación o scripts a los que puede acceder el agente.
  • Conocimientos de dominio útiles para corregir errores o realizar migraciones.
  • Requisitos para cómo el agente debe anotar o comentar los cambios en el código.
  • Instrucciones de limpieza para artefactos temporales creados durante la ejecución.

Ejemplo:

Add these guidelines to the plan:
- Use Azure Managed Identity for every Azure service connection. Do not introduce connection strings or Key Vault secrets unless a service has no Managed Identity support.
- Follow the code conventions defined in `/docs/internal/code-style.md`.
- Provide detailed comments explaining why each code change is necessary.
- After execution, remove any temporary scripts or scratch files created during migration.

Consulte también