Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
- Reveja a versão inicial
plan.mddepois de o agente a ter gerado. - Identifique o que quer alterar – âmbito, serviço-alvo, autenticação, respostas a questionários ou tarefas específicas.
- Avisa o Copilot com a mudança. Seja específico: nomeie a secção e o resultado desejado.
- Deixe o Copilot regenerar
plan.mde.metadata/tasks.jsonem conjunto. Ambos os ficheiros têm de permanecer alinhados para que a execução funcione. - 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.