Personalizzare il piano di modernizzazione quando si utilizza GitHub Copilot per la modernizzazione

Questo articolo descrive come personalizzare il piano di modernizzazione generato da GitHub Copilot modernizzazione per la migrazione di applicazioni Java e .NET a Azure.

È possibile avviare una sessione di modernizzazione creando un piano nel report di valutazione tramite problemi di selezione multipla oppure facendo clic su Migrate per Azure per creare ed eseguire un piano di modernizzazione dalla barra laterale. Quando si avvia una sessione di modernizzazione, GitHub Copilot genera un file plan.md (e un file .metadata/tasks.json) che descrive l'obiettivo, l'ambito, l'architettura corrente e di destinazione e l'elenco di attività. Questa coppia di file funge da progetto eseguito dall'agente di modernizzazione. È possibile perfezionare il piano prima dell'esecuzione in base alle esigenze del progetto.

Dopo che l'agente genera plan.md, viene aperto automaticamente nell'editor di Visual Studio Code. In questa fase, è possibile esaminare e personalizzare il piano per assicurarsi che sia allineato agli obiettivi di modernizzazione specifici.

Importante

Personalizza il piano chiedendo a Copilot di rigenerarlo o aggiornarlo invece di modificarlo manualmente plan.md direttamente. Le modifiche dirette a plan.md non aggiornano il file complementare tasks.json che determina l'esecuzione e i due file possono uscire dalla sincronizzazione. Il modello consigliato in ogni sezione seguente è "indicare Copilot cosa modificare, quindi lasciarlo rigenerare".

Esempio di struttura del file plan.md

L'agente genera un file plan.md con le sezioni seguenti. La stessa struttura viene usata per i progetti Java e .NET.

Sezione Purpose Personalizzabile tramite prompt
Intestazione del progetto Nome del progetto e titolo di modernizzazione. Sì: regolare il titolo in modo da riflettere l'onda o l'ambito.
Quadro tecnico Linguaggio, framework, strumento di compilazione, database e dipendenze chiave correnti rilevate dal codice sorgente. Indirettamente - correggere eventuali informazioni rilevate in modo errato fornendo un prompt a Copilot.
Sintesi Descrizione narrativa dell'obiettivo di modernizzazione: cosa sta cambiando, perché e l'approccio in più fasi. Rivolto al business, senza dettagli tecnici. Sì - chiarire l'obiettivo aziendale, aggiungere o rimuovere punti dell'elenco.
Riepilogo dell'impatto della migrazione Una tabella che associa ogni applicazione × servizio originale al nuovo servizio Azure, al metodo di autenticazione e ai commenti. Sì: modificare il servizio di destinazione, modificare l'autenticazione, aggiungere o rimuovere righe.
Apri domande e questionari Domande di chiarimento poste durante la creazione del piano e le risposte dell'utente. Determina la selezione delle attività. Sì: rispondere alle domande aperte, rivedere le risposte precedenti.

L'elenco di attività dettagliato non è incluso in plan.md. Si trova in .metadata/tasks.json e viene generato dalle risposte nella sezione Domande aperte e questionario più l'analisi dell'agente. Per modificare le attività, chiedi a Copilot di rigenerare il piano (vedi Come personalizzare).

Cosa è possibile personalizzare

Il piano di modernizzazione espone quattro superfici di personalizzazione. Ciascuno corrisponde a una sezione di plan.md e vi si accede con un prompt a Copilot anziché tramite una modifica diretta.

1. Ambito di modernizzazione

L'ambito determina i tipi di attività generati dall'agente. Il piano supporta quattro tipi di ambito:

  • Upgrade : aggiornamenti della versione di runtime e framework (ad esempio, JDK 11 → 17, Spring Boot 2.x → 3.x, .NET Framework → .NET 8).
  • Migrazione ad Azure — sostituzione di un servizio locale o non Azure con un equivalente in Azure (ad esempio, Oracle → Database di Azure per PostgreSQL, ActiveMQ → bus di servizio di Azure, segreti codificati in modo statico → Azure Key Vault).
  • Containerizzazione : generazione di un Dockerfile e degli artefatti di compilazione correlati.
  • Deployment: generazione di file di distribuzione e distribuzione in Azure. Le attività di distribuzione includono la containerizzazione in modo implicito.

Per personalizzare l'ambito, indica a Copilot quali tipi di ambito si applicano a questa esecuzione. Per esempio:

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. Servizi Azure di destinazione e autenticazione

La tabella Migration Impact Summary registra il servizio Azure di destinazione e il metodo di autenticazione per ogni componente migrato. Personalizza questi valori chiedendo a Copilot prima o dopo che viene generato il piano iniziale. Per esempio:

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.

L'agente rigenera sia plan.md sia tasks.json affinché l'elenco delle attività rimanga coerente con la tabella.

3. Risposte al questionario

Quando l'agente ha la ask_user funzionalità disponibile, chiede un breve questionario per definire l'ambito del piano. Le tre domande predefinite sono:

Domanda Risposta predefinita Impatto sul piano
Destinazione di distribuzione in Azure Nessuna distribuzione Aggiunge (o omette) un'attività di distribuzione e seleziona il servizio di elaborazione di destinazione (App contenitore di Azure, servizio Azure Kubernetes, Servizio app di Azure, App Service Istanza gestita, Azure Function Apps, App Web statiche di Azure).
Includere i test di integrazione? No Se impostato su "Sì, Integrazione locale con contenitori" o "Sì, Integrazione locale e smoke test", aggiunge un'attività di test di integrazione dopo le attività di migrazione e prima della containerizzazione.
Includere la containerizzazione (generazione dockerfile)? No Aggiunge un'attività di containerizzazione autonoma. Saltato automaticamente se viene selezionata un'attività di distribuzione, poiché la distribuzione include la containerizzazione.

Se l'agente non ha fatto una domanda (ad esempio, perché ask_user non era disponibile) o si vuole modificare una risposta precedente, richiedere Copilot. Per esempio:

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

Le risposte vengono registrate come elementi controllati nella sezione Apri domande e questionari e guidano la selezione delle attività.

4. Aggiungere, rimuovere o perfezionare attività specifiche

È possibile chiedere Copilot di aggiungere un'attività che non è stata generata, eliminare un'attività che non si vuole o modificare l'ambito di un'attività esistente. Chiedi conferma con intent, per consentire Copilot di selezionare la competenza e il modello corrispondenti dalla knowledge base.

Esempi:

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

L'agente crea solo attività per le migrazioni per cui ha una competenza o un modello corrispondente. Se si richiede una migrazione, l'agente non può supportare (ad esempio, un servizio proprietario interno), aggiunge un avviso alla sezione ambito e l'attività non viene aggiunta. In tal caso, considerare la migrazione come passaggio manuale e aggiungere un'istruzione Guidelines (vedere la sezione successiva) per documentarla.

Come personalizzare: chiedere a Copilot di rigenerare

Usare il flusso di lavoro seguente:

  1. Rivedere il plan.md iniziale dopo che l'agente l'ha generato.
  2. Identificare ciò che si vuole modificare: ambito, servizio di destinazione, autenticazione, risposte al questionario o attività specifiche.
  3. Fornisci a Copilot la modifica. Specificare: denominare la sezione e il risultato desiderato.
  4. Consenti a Copilot di rigenerare plan.md e .metadata/tasks.json insieme. Entrambi i file devono rimanere allineati per il funzionamento dell'esecuzione.
  5. Rivedere di nuovo il piano aggiornato. Ripeti finché l'ambito, l'architettura di destinazione e l'elenco di attività non corrispondono alle tue intenzioni.

Prompt end-to-end di esempio:

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 rigenera il piano, aggiorna la tabella, registra le risposte al questionario e rivede di conseguenza l'elenco di attività.

Fornire linee guida per l'esecuzione

Oltre all'ambito e alle attività, fornisci a Copilot linee guida — metodologia, convenzioni, strumenti e regole — che disciplinano il modo in cui viene eseguita la modernizzazione. Aggiungi le linee guida, nella maggior parte dei casi, come Guidelines sezione del piano o come riferimenti a file di regole locali.

Includere tutte le istruzioni che consentono di orientare il modo in cui Copilot modifica il codice, ad esempio:

  • Vincoli o divieti su determinati approcci di migrazione (ad esempio, non introducete gli starter di Spring Cloud Azure; usate gli SDK nativi).
  • Requisiti di stile del codice o convenzioni.
  • I collegamenti a file interni, documentazione o script a cui l'agente può accedere.
  • Informazioni sul dominio utili per correggere gli errori o eseguire le migrazioni.
  • Requisiti per il modo in cui l'agente deve annotare o commentare le modifiche al codice.
  • Istruzioni di pulizia per gli artefatti temporanei creati durante l'esecuzione.

Esempio:

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.

Vedere anche