Personalize o plano de modernização ao utilizar a modernização do GitHub Copilot

Este artigo descreve como personalizar o plano de modernização gerado pela modernização do GitHub Copilot para migrar aplicações Java e .NET para o Azure.

Pode iniciar uma sessão de modernização criando um plano no relatório de avaliação através da seleção múltipla de questões, ou clicando em Migrar para Azure para criar e executar um plano de modernização a partir da barra lateral. Quando inicias uma sessão de modernização, GitHub Copilot gera um ficheiro plan.md (e um ficheiro companheiro .metadata/tasks.json) que descreve o objetivo de migração, o âmbito, a arquitetura atual e alvo, e a lista de tarefas. Este par de ficheiros serve como o plano que o agente de modernização executa. Pode refinar o plano antes da execução para melhor se adequar às necessidades do seu projeto.

Depois de o agente gerar plan.md, ele abre automaticamente no editor de Visual Studio Code. Nesta fase, pode rever e personalizar o plano para garantir que está alinhado com os seus objetivos específicos de modernização.

Importante

Personaliza o plano ao pedir ao Copilot para regenerar ou atualizar o plano, em vez de editar manualmente plan.md diretamente. Edições diretas em plan.md não atualizam o ficheiro companion tasks.json que gere a execução, e os dois ficheiros podem sair de sincronia. O padrão recomendado em cada secção abaixo é "diga ao Copilot o que mudar, depois deixe-o regenerar."

Estrutura de ficheiro de exemplo plan.md

O agente gera um ficheiro plan.md com as seguintes secções. A mesma estrutura é usada para projetos Java e .NET.

Seção Purpose Personalizável através de instruções
Cabeçalho do projeto Nome do projeto e título da modernização. Sim – ajusta o título para refletir a onda ou o escopo.
Quadro Técnico Linguagem atual, framework, ferramenta de compilação, base de dados e dependências de chaves, detetados a partir do código-fonte. Indiretamente — corrija quaisquer factos incorretamente identificados, dando instruções ao Copilot.
Descrição geral Descrição narrativa do objetivo da modernização: o que está a mudar, porquê, e a abordagem faseada. Orientado para o negócio, sem detalhes técnicos. Sim – clarificar o objetivo comercial, adicionar ou remover marcadores.
Resumo do Impacto da Migração Uma tabela que mapeia cada aplicação × serviço original → novo serviço Azure, método de autenticação e comentários. Sim - mudar o serviço alvo, alterar a autenticação, adicionar ou remover linhas.
Perguntas Abertas & Questionário Perguntas de esclarecimento levantadas durante a criação do plano e as respostas do utilizador. Determina a seleção de tarefas. Sim – responder a perguntas em aberto, rever respostas anteriores.

A lista detalhada de tarefas não está em plan.md. Encontra-se em .metadata/tasks.json e é gerado a partir das suas respostas na secção Perguntas Abertas e Questionário, bem como da análise do agente. Para alterar tarefas, solicite Copilot para regenerar o plano (ver Como personalizar).

O que pode ser personalizado

O plano de modernização expõe quatro superfícies de personalização. Cada elemento corresponde a uma secção de plan.md e é acedido através de um pedido ao Copilot, em vez de uma edição direta.

1. Âmbito da modernização

O âmbito determina que tipos de tarefas o agente gera. O plano suporta quatro tipos de âmbito:

  • Upgrade — atualizações de versões em tempo de execução e framework (por exemplo, JDK 11 → 17, Spring Boot 2.x → 3.x, .NET Framework → .NET 8).
  • Migração para Azure — substituir um serviço local ou não Azure por um equivalente Azure (por exemplo, Oracle → Base de Dados do Azure para PostgreSQL, ActiveMQ → Azure Service Bus, segredos codificados → Azure Key Vault).
  • Contentorização — geração de um Dockerfile e artefactos de compilação associados.
  • Deployment — gerar ficheiros de deployment e implementar para Azure. As tarefas de implementação incluem implicitamente a containerização.

Para personalizar a mira, diga ao Copilot quais os tipos de mira que se aplicam a esta corrida. Por exemplo:

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. Serviços Azure de destino e autenticação

A tabela Migration Impact Summary regista o serviço Azure destino e o método de autenticação para cada componente migrado. Personalize estes valores dando instruções ao Copilot antes ou depois de ser gerado o plano inicial. Por exemplo:

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.

O agente regenera ambos plan.md e tasks.json , assim, a lista de tarefas mantém-se consistente com a tabela.

3. Respostas do questionário

Quando o agente tem a capacidade ask_user disponível, faz um breve questionário para definir o âmbito do plano. As três perguntas padrão são:

Question Resposta padrão Efeito no plano
Destino de implementação no Azure Sem implantação Adiciona (ou omite) uma tarefa de deployment e seleciona o serviço de computação alvo (Azure Container Apps, Azure Kubernetes Service, Serviço de Aplicações do Azure, App Service Managed Instance, Azure Function Apps, Aplicações Web Estáticas do Azure).
Inclui testes de integração? No Quando definido como "Sim, Integração Local com Contentores" ou "Sim, Integração Local e Testes de Fumo", adiciona-se uma tarefa de teste de integração após as tarefas de migração e antes da containerização.
Incluir a containerização (geração de ficheiros Docker)? No Adiciona uma tarefa de contentorização autónoma. É saltado automaticamente se uma tarefa de implementação for selecionada, porque a implementação cobre a contentorização.

Se o agente não fez uma pergunta (por exemplo, porque ask_user não estava disponível) ou se quiser alterar uma resposta anterior, solicite Copilot. Por exemplo:

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

As respostas são registadas como itens selecionados na secção Perguntas Abertas e Questionário e orientam a seleção de tarefas.

4. Adicionar, remover ou refinar tarefas específicas

Podes pedir ao Copilot para adicionar uma tarefa que não foi gerada, eliminar uma tarefa que não queres ou ajustar o âmbito de uma tarefa existente. Enuncie com o intenção — deixe-Copilot escolher a competência e o padrão de correspondência da sua base de conhecimento.

Exemplos:

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".

Observação

O agente só cria tarefas para migrações para as quais tem uma competência ou padrão correspondente. Se solicitares uma migração que o agente não consegue suportar (por exemplo, um serviço proprietário interno), adiciona um aviso à secção de âmbito e a tarefa não é adicionada. Nesse caso, trate a migração como um passo manual e adicione uma instrução de Diretrizes (ver a secção seguinte) para a documentar.

Como personalizar: pedir ao Copilot para regenerar

Utilize o seguinte fluxo de trabalho:

  1. Reveja a versão inicial plan.md depois de o agente a ter gerado.
  2. Identifique o que quer alterar – âmbito, serviço-alvo, autenticação, respostas a questionários ou tarefas específicas.
  3. Avisa o Copilot com a mudança. Seja específico: nomeie a secção e o resultado desejado.
  4. Deixe o Copilot regenerar plan.md e .metadata/tasks.json em conjunto. Ambos os ficheiros têm de permanecer alinhados para que a execução funcione.
  5. Volte a rever o plano atualizado. Itere até que o escopo, a arquitetura do alvo e a lista de tarefas coincidam com a sua intenção.

Exemplo de instrução de ponta a ponta:

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).

O Copilot regenera o plano, atualiza a tabela, regista as respostas do questionário e revê a lista de tarefas em conformidade.

Fornecer diretrizes para a execução

Para além do âmbito e das tarefas, forneça Copilot diretrizes — metodologia, convenções, ferramentas e regras — que regem a forma como a modernização é executada. Adicionar diretrizes na maioria das vezes como uma Guidelines secção no plano ou como referências a ficheiros de regras locais.

Inclua quaisquer instruções que ajudem a orientar a forma como o Copilot modifica o código, tais como:

  • Restrições ou proibições relativamente a determinadas abordagens de migração (por exemplo, não introduza os starters do Spring Cloud Azure; use os SDKs nativos).
  • Requisitos de estilo de código ou convenção.
  • Ligações para ficheiros internos, documentação ou scripts a que o agente pode aceder.
  • Conhecimento do domínio útil para corrigir erros ou realizar migrações.
  • Requisitos sobre como o agente deve anotar ou comentar alterações de código.
  • Instruções de limpeza para artefactos temporários criados durante a execução.

Example:

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 também