Valutazione batch con l'agente di modernizzazione GitHub Copilot

La valutazione batch consente di analizzare più applicazioni contemporaneamente, offrendo una panoramica completa del panorama della modernizzazione nelle applicazioni. Questo articolo illustra il processo di valutazione efficiente di più repository.

La valutazione batch è particolarmente utile per la pianificazione della migrazione perché consente di valutare in modo efficiente la conformità e i requisiti di varie applicazioni contemporaneamente. Usando la valutazione batch, è possibile valutare contemporaneamente repository diversi e ottenere report di valutazione dettagliati per ogni applicazione. Produce due tipi di report per supportare la pianificazione della migrazione:

  • Report per app: fornisce informazioni dettagliate su tutti i problemi di modernizzazione identificati a livello di singolo repository.
  • report Aggregated report: presenta una prospettiva complessiva di tutte le applicazioni valutate, che offre informazioni dettagliate di riepilogo, raccomandazioni su servizi Azure, piattaforme di destinazione e percorsi di aggiornamento. Inoltre, il report aggregato include collegamenti per facilitare l'accesso a ogni report dell'app.

La valutazione batch offre i vantaggi seguenti:

  • Visibilità tra applicazioni:

    • Report aggregati: ottenere una visualizzazione completa tra le applicazioni.
    • Analisi tra più repository: Identificare modelli e dipendenze comuni tra applicazioni.
    • Informazioni dettagliate sulla definizione delle priorità: comprendere quali applicazioni necessitano di attenzione immediata.
  • Scalabilità ed efficienza:

    • Elaborazione parallela: usare agenti di codifica cloud per elaborare più repository contemporaneamente.
    • Flussi di lavoro automatizzati: integrazione con pipeline CI/CD per la valutazione pianificata.
    • Risparmio di tempo: ridurre il tempo totale di valutazione da settimane a ore.

Prerequisiti

  • Modernizzare la CLI.
  • Accesso a tutti i repository da valutare.
  • L'autenticazione di GitHub è configurata (gh auth login).

Configurare gli archivi

L'agente di modernizzazione supporta diversi modi per specificare i repository da valutare:

  • Cartella corrente: Valuta il progetto nella tua attuale directory di lavoro.
  • Inserimento manuale: immettere direttamente i percorsi delle directory locali o gli URL Git remoti.
  • File di configurazione del repository: usare un file di configurazione JSON che elenca tutti i repository.

File di configurazione del repository

Per le operazioni batch in molti repository, creare un file di configurazione JSON per elencare tutti i repository. Ad esempio, crealo nella directory di lavoro .github/modernize/repos.json oppure specifica un percorso personalizzato.

Assicurarsi di avere le autorizzazioni appropriate per i repository o crearne una copia tramite fork.

Formato semplice (matrice di repository):

[
  {
    "name": "PhotoAlbum-Java",
    "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
  },
  {
    "name": "PhotoAlbum",
    "url": "https://github.com/Azure-Samples/PhotoAlbum.git"
  },
  {
    "name": "eShopOnWeb",
    "url": "https://github.com/dotnet-architecture/eShopOnWeb.git"
  }
]

Formato completo (con rami e percorsi locali):

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "local-project",
      "path": "/absolute/path/to/project"
    }
  ]
}

Ogni voce del repository supporta i campi seguenti:

Campo Descrizione Obbligatorio
name Nome amichevole per il repository (usato nei report e nei dashboard).
url URL clone Git in formato HTTPS o SSH. Uno di url o path
path Percorso assoluto della directory locale. Uno di url o path
branch Ramo da controllare dopo la clonazione. No
description Descrizione leggibile dagli umani No

Formato completo con raggruppamento di app (facoltativo, per la creazione di report organizzati):

È possibile aggiungere una apps[] sezione per raggruppare i repository in applicazioni logiche. Quando vengono definite le app, il report aggregato organizza i risultati in base all'applicazione e supporta la distribuzione dei report in destinazioni esterne.

{
  "repos": [
    {
      "name": "PhotoAlbum-Java",
      "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git",
      "branch": "main"
    },
    {
      "name": "PhotoAlbum",
      "url": "https://github.com/Azure-Samples/PhotoAlbum.git"
    }
  ],
  "apps": [
    {
      "identifier": "photo-app",
      "description": "Photo management application",
      "repos": ["PhotoAlbum-Java"],
      "output": {
        "type": "local",
        "path": "/path/to/reports/photo-app"
      }
    }
  ]
}

Ogni voce nell’app supporta:

Campo Descrizione Obbligatorio
identifier Nome visualizzato univoco dell'applicazione.
description Descrizione leggibile dagli umani No
repos Elenco dei nomi dei repository che appartengono a questa app.
output Dove distribuire il report di valutazione dell'app dopo la generazione. No

Il output campo supporta i tipi di distribuzione seguenti:

Tipo Descrizione Campi obbligatori
local Copiare i report in una directory locale. path
git Effettuare il push dei report in un repository Git. Il formato dell'URL è https://github.com/org/repo.git#branch:path. url

Suggerimento

È possibile includere repository di organizzazioni diverse e usare metodi di autenticazione diversi purché si abbia accesso.

L'agente di modernizzazione rileva automaticamente il repos.json file in .github/modernize/repos.json quando si seleziona Da un file di configurazione in modalità interattiva. È anche possibile fornire un percorso personalizzato.

Eseguire la valutazione batch

Sono disponibili due modalità di esecuzione:

  • Esecuzione locale: l'agente di modernizzazione elabora i repository uno dopo l'altro nel computer locale. Questa modalità funziona meglio per un set più piccolo di applicazioni o per i test iniziali. Supporta sia gli URL Git sia i repository di percorsi locali.
  • Delega dell'agente di codifica cloud: l'agente di modernizzazione invia attività agli agenti di codifica cloud GitHub per l'elaborazione parallela nel cloud. Questa modalità è più veloce per scenari multi-repo.

Importante

La delega dell'agente di codifica cloud richiede che i repository abbiano URL del repository GitHub (github.com). I repository di percorsi locali e i provider diversi da GitHub (GitLab, Azure DevOps) non sono supportati per la delega nel cloud. Usare l'esecuzione locale per tali repository.

Suggerimento

Usando la delega dell'agente di codifica cloud, si abilita l'esecuzione parallela in tutti i repository. Questo approccio riduce significativamente il tempo totale di valutazione per i portafogli di grandi dimensioni.

Modalità interattiva (valutazione locale)

  1. Eseguire l'agente di modernizzazione:

    modernize
    
  2. Selezionare Valutare dal menu principale.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra il menu principale con l'opzione Valuta nel terminale.

  3. Scegliere come specificare i repository di destinazione. Selezionare Da un file di configurazione per usare un repos.json file.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra la selezione del tipo di origine nel terminale.

    Suggerimento

    È anche possibile selezionare Input manuale per digitare direttamente percorsi locali o URL Git remoti oppure Cartella corrente per valutare il progetto nella tua directory attuale.

  4. Se il repos.json file viene rilevato nel percorso predefinito, l'agente lo riempie automaticamente. In caso contrario, immettere il percorso del file di configurazione e premere INVIO.

  5. Tutti i repository sono selezionati per impostazione predefinita. Deselezionare tutti i repository da ignorare e quindi premere INVIO per confermare la selezione.

    • Usare i tasti di direzione per spostarsi e premere Spazio per attivare o disattivare singoli repository.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'elenco di repository nel terminale.

  6. Scegliere la modalità di esecuzione. Selezionare Valuta localmente.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra il menu della modalità di valutazione nel terminale.

  7. Selezionare i domini di valutazione da analizzare. Scegliere tra Java upgrade e Cloud Readiness, quindi premere Invio.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra la selezione del dominio di valutazione nel terminale.

  8. Esaminare e configurare le opzioni di valutazione. La pagina di configurazione mostra le opzioni raggruppate per lingua e dominio:

    • Java/GENERAL: Copertura dell'analisi (solo problema, problemi e Tecnologie, o problemi, tecnologie e Dipendenze).
    • Java/JAVA UPGRADE: Runtime di destinazione (OpenJDK 11, 17 o 21).
    • Java/CLOUD READINESS: Servizi di calcolo di destinazione, Sistema operativo di destinazione e Containerizzazione.
    • .NET/CLOUD READINESS: Servizi di calcolo mirati.

    Usare i tasti di direzione per spostarsi, premere INVIO per modificare un valore o selezionare Continua per continuare con le impostazioni correnti.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra la pagina di configurazione della valutazione nel terminale.

    Suggerimento

    Le impostazioni predefinite consigliate funzionano per la maggior parte degli scenari. È necessario modificare queste impostazioni solo se si hanno requisiti specifici, ad esempio la destinazione di una determinata versione JDK o Azure servizio di calcolo.

  9. Immettere il percorso di output per i risultati della valutazione o premere INVIO per accettare l'impostazione predefinita.

  10. L'agente opera automaticamente:

    • Clona i repository remoti (i repository di percorsi locali vengono usati direttamente).

    • Esegue la valutazione in ogni repository uno alla volta.

    • Genera report di valutazione individuali.

      Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'output della generazione di singoli report di valutazione nel terminale.

    • Crea un report aggregato.

      Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'output della generazione di report aggregati nel terminale.

  11. Al termine della valutazione, l'agente apre automaticamente il report aggregato.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra il contenuto del report aggregato.

Modalità interattiva (delega agli agenti di codifica cloud)

Prima di tutto, configurare gli agenti di codifica cloud in ogni repository di applicazioni. Per configurare i Cloud Coding Agents, effettuare un fork dei repository di esempio.

Configurazione per le applicazioni .NET

Configurare per l'esecuzione in Windows per le applicazioni .NET Framework

Per impostazione predefinita, l'agente di codifica Copilot viene eseguito in un ambiente Ubuntu Linux. Per le applicazioni .NET Framework, è necessario un ambiente Windows. Per abilitarla, configurare .github/workflows/copilot-setup-steps.yaml nel main ramo del repository dell'applicazione, come illustrato nell'esempio seguente:

# Windows-based Copilot Setup Steps for .NET tasks
# Note: Windows runners have firewall limitations that may affect some network operations
# Use this workflow for .NET projects that require Windows-specific tooling

name: "Copilot Setup Step (Windows)"

on:
  workflow_dispatch:

jobs:
  copilot-setup-steps:
    runs-on: windows-latest
    permissions:
      contents: read
    steps:
      - name: Checkout code
        uses: actions/checkout@v5

Per saperne di più su: Personalizzazione dell'ambiente di sviluppo di Copilot con i passaggi di configurazione di Copilot

Disabilitare il firewall

Disabilitare il firewall integrato dell'agente di codifica di Copilot nelle impostazioni del repository, come illustrato nell'immagine seguente.

Screenshot di GitHub che mostra le impostazioni del repository con l'impostazione Abilita firewall impostata su Off.

Configurazione per le applicazioni Java

Configurare il Modernization MCP Server di GitHub Copilot nella sezione Agente di codifica cloud delle impostazioni del repository come riportato nel seguente esempio:

{
  "mcpServers": {
    "app-modernization": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "-y",
        "@microsoft/github-copilot-app-modernization-mcp-server"
      ]
    }
  }
}

Screenshot di GitHub che mostra le impostazioni dell'agente di codifica del repository con la sezione configurazione MCP evidenziata.

Gradi

  1. Eseguire l'agente di modernizzazione:

    modernize
    
  2. Selezionare Valutare dal menu principale.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra il menu principale con l'opzione Valuta nel terminale.

  3. Scegliere come specificare i repository di destinazione. Selezionare Da un file di configurazione per utilizzare un repos.json file oppure selezionare Inserimento manuale per immettere direttamente gli URL del repository GitHub.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra la selezione del tipo di origine nel terminale.

  4. Se è stata selezionata l'opzione Da un file di configurazione e il repos.json file viene rilevato nel percorso predefinito, l'agente lo riempie automaticamente. In caso contrario, immettere il percorso del file di configurazione e premere INVIO.

  5. Tutti i repository sono selezionati per impostazione predefinita. Deselezionare tutti i repository da ignorare e quindi premere INVIO per confermare la selezione.

    • Usare i tasti di direzione per spostarsi e premere Spazio per attivare o disattivare singoli repository.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'elenco di repository nel terminale.

  6. Scegliere la modalità di esecuzione. Selezionare Delegare agli agenti cloud.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra il menu di valutazione con l'opzione Delega ad agenti di codifica cloud selezionata.

    Annotazioni

    Quando si delega agli agenti di codifica cloud, la selezione del dominio e i passaggi di configurazione della valutazione non sono supportati. L'agente cloud usa le configurazioni predefinite per eseguire la valutazione.

  7. Immettere il percorso di output per i risultati della valutazione o premere INVIO per accettare l'impostazione predefinita.

  8. L'agente delega automaticamente le attività di valutazione per ogni repository agli agenti di codifica cloud e le esegue nel cloud in parallelo.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'output dello stato di avanzamento della delega della valutazione agli agenti di codifica cloud nel terminale.

    L'agente recupera i risultati della valutazione per app a livello locale e genera in loco il report aggregato.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'aggregazione dei report di valutazione nel terminale.

  9. Al termine della valutazione, l'agente apre automaticamente il report aggregato.

Modalità non interattiva (interfaccia della riga di comando)

È anche possibile usare la modalità non interattiva specificando direttamente gli argomenti di comando. Usare il comando modernize assess:

Valutare in locale usando un file di configurazione del repository:

modernize assess --source .github/modernize/repos.json

Valutare più repository specificando direttamente le origini:

modernize assess --source https://github.com/org/repo1 --source https://github.com/org/repo2

Valutare delegando gli agenti di codifica cloud:

modernize assess --source .github/modernize/repos.json --delegate cloud --wait

Per altre informazioni, vedere Valutare - Comandi dell'interfaccia della riga di comando.

Informazioni sul report aggregato

Il report aggregato offre una visualizzazione completa delle applicazioni valutate nel modo seguente:

Dashboard

  • Snapshot dell'integrità del portfolio: il numero totale di app, quante necessitano di aggiornamenti, e i conteggi aggregati di blocchi e problemi.
  • Distribuzione della tecnologia: quali framework sono in uso e quante app le condividono.
  • Distribuzione del lavoro: se la migrazione complessiva è una piccola o grande impresa.

Raccomandazioni

  • Azure Services: mappa le dipendenze correnti agli equivalenti Azure consigliati. Le dipendenze condivise tra le app vengono decise una sola volta, in modo da evitare la rielaborazione per app.
  • Piattaforma di destinazione: guida alla scelta dell'hosting, ad esempio App contenitore di Azure rispetto al servizio Azure Kubernetes e illustra le opportunità di consolidamento.
  • Percorso di aggiornamento: identifica le app che necessitano di aggiornamenti del framework come prerequisito, separando il lavoro di aggiornamento dal lavoro di migrazione.
  • Onde di migrazione: sequenzia le app in base all'idoneità e al rischio in fasi. Questo approccio consente la vittoria anticipata, mentre le app più difficili vengono preparate in parallelo.

Matrice di valutazione delle applicazioni

  • Panoramica rapida per ogni applicazione su aspetti del framework, piattaforma di destinazione, raccomandazione di aggiornamento, scomposizione dei problemi (obbligatorio, potenziale, facoltativo), ridimensionamento e altro ancora.
  • Collegamenti a singoli report dell'app per il drill-down quando necessario.

Risoluzione dei problemi relativi all'analisi batch

Problemi comuni

Errori di accesso al repository:

  • Verificare l'autenticazione di GitHub usando gh auth status.
  • Assicurarsi di avere accesso a tutti i repository elencati in repos.json.

Errori di clonazione:

  • Verificare che gli URL del repository in repos.json siano corretti e accessibili.
  • Assicurarsi di disporre delle autorizzazioni di accesso appropriate per tutti i repository.
  • Controllare la connettività di rete e le impostazioni VPN.

Errori di valutazione:

  • Controllare se il repository contiene progetti di Java o di .NET validi.
  • Verificare che i file di compilazione esistano, ad esempio pom.xml, build.gradle*.csproj, *.sln, o *.slnx.
  • Esaminare i messaggi di errore nell'output della console.

Problemi di delega dell'agente di codifica cloud:

  • Assicurarsi di disporre delle autorizzazioni appropriate per creare flussi di lavoro GitHub Actions.
  • Controlla le autorizzazioni di GitHub Actions e i limiti di quota per l'organizzazione.
  • Per le app di .NET Framework, assicurarsi che la configurazione del runner di Windows sia impostata correttamente.
  • Controllare la configurazione del server MCP.

Passaggi successivi

Dopo aver completato la valutazione batch, è possibile:

Continuare il flusso di lavoro di modernizzazione:

Altre informazioni:

Inviare commenti

Valiamo l'input! Se si hanno commenti e suggerimenti sulla valutazione batch o sull'agente di modernizzazione, creare un problema nel repository github-copilot-appmod o usare il modulo di feedback sulla modernizzazione GitHub Copilot.