Aggiornamento batch con l'agente di modernizzazione GitHub Copilot

L'aggiornamento batch consente di applicare piani di modernizzazione coerenti tra più repository contemporaneamente. Questo articolo illustra come aggiornare più applicazioni in modo efficiente su scala aziendale.

Usando l'aggiornamento batch, è possibile:

  • Aggiornare più applicazioni contemporaneamente usando la stessa destinazione di aggiornamento.
  • Applicare modelli coerenti usando modelli di aggiornamento simili tra le applicazioni.
  • Sfruttare l'esecuzione parallela quando si delega agli agenti di codifica cloud.

L'aggiornamento batch offre i vantaggi seguenti:

  • Esecuzione coerente:

    • Approccio standardizzato: applicare gli stessi modelli di modernizzazione in tutti i repository.
    • Riduzione della variabilità: garantire percorsi di aggiornamento coerenti per applicazioni simili.
    • Strategie riutilizzabili: usare competenze specifiche dell'organizzazione in tutte le applicazioni.
  • 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 modernizzazione pianificata.
    • Risparmio di tempo: ridurre il tempo totale di modernizzazione da settimane a ore.

Prerequisiti

  • Modernizzare la CLI.
  • Valutazione batch completata (scelta consigliata ma non obbligatoria).
  • Tutti i repository usano lo stesso linguaggio di programmazione (Java o .NET).
  • Accesso a tutti i repository da aggiornare.
  • L'autenticazione di GitHub è configurata (gh auth login).

Importante

Tutti i repository in un aggiornamento batch devono usare lo stesso linguaggio di programmazione. Se un repository usa un linguaggio diverso, l'aggiornamento batch contrassegna il repository come non riuscito e lo ignora.

Configurare gli archivi

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

  • Cartella corrente: Aggiorna il progetto nella directory di lavoro corrente.
  • 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.

Suggerimento

Per i repository di esempio, creare prima una copia tramite fork e assicurarsi di disporre dell'autorizzazione di amministratore per delegare il processo agli agenti di codifica cloud.

Formato semplice (matrice di repository):

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

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

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.

Scegliere la modalità di esecuzione

L'aggiornamento batch supporta due modalità di esecuzione e due metodi di interazione:

Modalità di esecuzione

Esecuzione locale

  • Ideale per: test, set di repository più piccoli (1-5 repository) o quando si preferisce il controllo locale.
  • Come funziona: elabora i repository in sequenza nel computer locale.
  • Configurazione richiesta: nessuna oltre i prerequisiti di base.
  • Supporta: sia l'URL Git che i repository di percorsi locali.

Delega dell'agente di codifica cloud

  • Ideale per: operazioni su scala aziendale, portfolio di grandi dimensioni (5+ repository) o elaborazione parallela.
  • Come funziona: invia attività agli agenti di codifica cloud GitHub per l'esecuzione parallela nel cloud.
  • Installazione richiesta: configurazione del server MCP in ogni repository (configurata durante l'installazione).
  • Supports: solo repository con URL GitHub (github.com). I percorsi locali e i provider non GitHub non sono supportati.

Importante

La delega dell'agente di codifica cloud richiede che i repository abbiano URL del repository GitHub (github.com). I repository specificati con percorsi locali o ospitati in provider non GitHub (GitLab, Azure DevOps) vengono ignorati durante la delega cloud. Usare l'esecuzione locale per tali repository.

Suggerimento

Elaborando i repository in parallelo, la delega dell'agente di codifica cloud può ridurre il tempo totale di modernizzazione da ore a minuti.

Metodi di interazione

Modalità interattiva (TUI)

  • Esperienza guidata con i menu e i messaggi di comando.
  • Ideale per gli utenti per la prima volta o quando si desidera esaminare le opzioni.
  • Supporta sia l'esecuzione locale che quella cloud.

Modalità non interattiva (interfaccia della riga di comando/headless)

  • Basato sulla riga di comando, completamente automatizzato.
  • Ideale per le pipeline CI/CD e l'automazione.
  • Supporta sia l'esecuzione locale che quella cloud con --delegate cloud flag.

Annotazioni

È possibile combinare qualsiasi modalità di esecuzione con qualsiasi metodo di interazione. Per esempio:

  • modernize → selezionare Aggiorna (interattivo, locale)
  • modernize → selezionare Aggiorna → Delega agli agenti cloud (interattivo, cloud)
  • modernize upgrade "Java 21" --source ./repos.json (non interattivo, locale)
  • modernize upgrade "Java 21" --source ./repos.json --delegate cloud (non interattivo, cloud)

Come funziona l'aggiornamento a lotti

Il flusso di lavoro di aggiornamento batch:

  1. Rilevamento lingua: rileva automaticamente la lingua del progetto (Java o .NET) dal primo repository.
  2. Creazione del piano: crea un piano di aggiornamento sulla base del tuo input o usa le versioni LTS più recenti.
  3. Esecuzione: applica l'aggiornamento a ogni repository.
  4. Convalida: compila e convalida le modifiche per ogni repository.

Eseguire l'aggiornamento batch

Dopo aver configurato i repository e aver scelto una modalità di esecuzione, avviare l'aggiornamento batch.

Modalità interattiva (aggiornamento locale)

  1. Eseguire l'agente di modernizzazione:

    modernize
    
  2. Selezionare Aggiorna dal menu principale.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra il menu principale con l'opzione Aggiorna 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 Inserimento manuale per immettere direttamente percorsi locali o URL Git remoti oppure Cartella corrente per aggiornare il progetto nella cartella corrente.

  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 CLI che mostra l'elenco Scegli i repository nel terminale.

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

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'opzione di menu Aggiorna localmente nel terminale.

  7. Immettere il prompt di destinazione dell'aggiornamento(ad esempio, Java 21 o .NET 10) oppure premere Invio per accettare l'impostazione predefinita (versione LTS più recente).

  8. L'agente opera automaticamente:

    • Crea un piano di aggiornamento in base alla richiesta.
    • Applica il piano a ogni repository in sequenza.
    • Compila e convalida ogni repository dopo le modifiche.
    • Visualizza lo stato di avanzamento e il riepilogo per ogni repository.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra lo stato di avanzamento dell'aggiornamento per ogni repository nel terminale.

Modalità interattiva (delega agli agenti di codifica cloud)

Prerequisiti: Configurare il server MCP

Prima di eseguire l'aggiornamento, configurare il GitHub Copilot Modernization MCP Server in ogni repository.

Per applicazioni Java, aggiungere questa configurazione nella sezione dell'Agente di Coding Cloud delle impostazioni del repository:

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

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

Gradi

  1. Eseguire l'agente di modernizzazione:

    modernize
    
  2. Selezionare Aggiorna dal menu principale.

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

  3. Scegliere come specificare i repository di destinazione. Selezionare Da un file di configurazione.

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

  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 Delegare agli agenti cloud.

    Screenshot dell'interfaccia della riga di comando di Modernize che mostra l'opzione di menu Delega agli agenti di codifica nel cloud nel terminale.

  7. Immettere il prompt di destinazione dell'aggiornamento (ad esempio, Java 21) o premere Invio per accettare il valore predefinito.

  8. L'agente opera automaticamente:

    • Crea piani di aggiornamento per ogni repository.

    • Invia un job dell'agente di codifica cloud per ogni repository.

    • Esegue processi in modo indipendente in parallelo nel cloud.

    • Visualizza gli ID di lavoro e gli URL delle richieste pull per ogni repository.

      Screenshot dell'interfaccia della riga di comando di Modernize che mostra lo stato di avanzamento della delega degli aggiornamenti agli agenti di codifica cloud nel terminale.

    • Delega le attività a AgentHQ per l'esecuzione parallela.

      Screenshot di GitHub che mostra il riquadro Agenti con le attività di aggiornamento delegate a AgentHQ.

    • Tiene traccia dello stato di avanzamento per ogni singola attività in tempo reale.

      Screenshot di GitHub che mostra il riquadro Agenti con il monitoraggio dell'avanzamento per le singole attività di aggiornamento dell'Agente di Programmazione Cloud.

    • Visualizza il riepilogo dell'aggiornamento per ogni attività completata.

      Screenshot di GitHub che mostra il riquadro Agenti con il riepilogo dell'aggiornamento per le singole attività dell'agente di codifica cloud.

Modalità non interattiva (interfaccia della riga di comando)

Per l'automazione e l'integrazione CI/CD, usare il modernize upgrade comando :

Eseguire l'aggiornamento in locale usando un file di configurazione del repository:

modernize upgrade "Java 21" --source .github/modernize/repos.json

Aggiornare più repository specificando direttamente le origini:

modernize upgrade "Java 21" --source https://github.com/org/repo1 --source https://github.com/org/repo2

Eseguire l'aggiornamento con gli agenti di codifica cloud:

modernize upgrade "Java 21" --source .github/modernize/repos.json --delegate cloud

Annotazioni

Per l'esecuzione batch in modalità headless e ulteriori opzioni CLI, consultare la sezione Configurazione multi-repository nelle informazioni di riferimento sui comandi della riga di comando.

Verificare i risultati

Al termine dell'aggiornamento batch:

  1. Controllare il report aggregato visualizzato nel terminale.

  2. Esaminare le modifiche dei singoli repository:

    cd <repository-name>
    git status
    git diff
    
  3. Creare richieste pull per gli aggiornamenti riusciti:

    cd <repository-name>
    gh pr create --title "Upgrade to Java 21" --body "Automated upgrade by modernization agent"
    

Risoluzione dei problemi relativi agli aggiornamenti 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 in repos.json.

Errori di mancata corrispondenza della lingua:

  • Assicurarsi che tutti i repository in repos.json usino la stessa lingua (Java o .NET).
  • Creare operazioni batch separate per linguaggi diversi.

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 compilazione dopo l'aggiornamento:

  • Esaminare i messaggi di errore di compilazione nel report aggregato.
  • Controllare se è necessario aggiornare altre dipendenze.
  • Verificare la compatibilità delle librerie di terze parti con la nuova versione.

Singoli errori del repository:

  • Il processo batch continua anche se i singoli repository hanno esito negativo.
  • Controllare il report aggregato per identificare i repository falliti.
  • Controllare i log degli errori per individuare messaggi di errore specifici.
  • Riprovare singolarmente i repository falliti.

Errori dell'agente di codifica cloud:

  • Controllare le autorizzazioni e i limiti di quota di GitHub Actions.
  • Per .NET Framework, assicurarsi che la configurazione del runner di Windows sia impostata correttamente.

Passaggi successivi

Dopo aver completato l'aggiornamento batch, è possibile:

Continuare a migliorare:

Altre informazioni:

Inviare commenti

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