Condividi tramite


Aggiornamento batch con l'agente di modernizzazione di 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.
  • 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

Per abilitare l'aggiornamento batch, creare un .github/modernize/repos.json file nella directory di lavoro in cui sono elencati tutti i repository da aggiornare.

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.

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

Configurazione del repository

Ogni voce richiede:

  • name: nome descrittivo per il repository (usato nei report e nei dashboard).
  • url: URL di clonazione Git (formato HTTPS).

Suggerimento

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

Percorso del file

È necessario inserire il repos.json file in .github/modernize/repos.json.

L'agente di modernizzazione rileva automaticamente questo file durante l'esecuzione di operazioni batch.

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.

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

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 (interattivo, locale)
  • modernize → selezionare Agenti di codifica cloud (interattivo, cloud)
  • modernize upgrade "Java 21" (non interattivo, locale)
  • modernize upgrade "Java 21" --delegate cloud (non interattivo, cloud)

Come funziona l'aggiornamento a lotti

Il flusso di lavoro di aggiornamento batch:

  1. Rilevamento del linguaggio: rileva automaticamente il linguaggio 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. L'agente rileva il repos.json file e visualizza l'elenco dei repository:

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

  3. Selezionare i repository da aggiornare e premere Enter per confermare la selezione.

    • Premi Ctrl+A per selezionare tutti i repository.
    • In alternativa, usare i tasti di direzione per spostarsi e premere Enter per selezionare singoli repository.
  4. Selezionare 2. Eseguire l'aggiornamento dal menu principale.

    Screenshot di Modernize CLI che mostra l'opzione di menu Aggiorna Runtime e Framework nel terminale.

  5. Per eseguire l'aggiornamento, selezionare 1. Eseguire l'aggiornamento in locale.

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

  6. 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 server MCP per la modernizzazione di GitHub Copilot in ogni repository.

Per le applicazioni Java, aggiungere questa configurazione nella sezione Cloud Coding Agent 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 di configurazione MCP evidenziata.

Gradi

  1. Eseguire l'agente di modernizzazione:

    modernize
    
  2. L'agente rileva il repos.json file e visualizza l'elenco dei repository:

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

  3. Selezionare i repository da aggiornare e premere Enter per confermare la selezione.

    • Premi Ctrl+A per selezionare tutti i repository.
    • In alternativa, usare i tasti di direzione per spostarsi e premere Enter per selezionare singoli repository.
  4. Selezionare 2. Eseguire l'aggiornamento dal menu principale.

  5. Per eseguire l'aggiornamento, selezionare 2. Delegare agli agenti di codifica 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.

  6. 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 rilevamento dello stato per le singole attività di aggiornamento dell'agente di codifica 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:

modernize upgrade "Java 21"

Eseguire l'aggiornamento con gli agenti di codifica cloud:

modernize upgrade "Java 21" --delegate cloud

Il comando rileva automaticamente il repos.json file ed elabora tutti i repository.

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 lo stesso linguaggio (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 di Windows Runner 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 di GitHub Copilot.