Batch-Upgrade mit dem GitHub Copilot Modernisierungsagent

Mit dem Batchupgrade können Sie konsistente Modernisierungspläne für mehrere Repositorys gleichzeitig anwenden. In diesem Artikel wird gezeigt, wie Sie mehrere Anwendungen effizient im Unternehmensmaßstab aktualisieren.

Mithilfe des Batchupgrades können Sie folgende Aktionen ausführen:

  • Führen Sie ein gleichzeitiges Upgrade mehrerer Anwendungen mithilfe desselben Upgradeziels durch.
  • Wenden Sie konsistente Muster mithilfe ähnlicher Upgrademuster für alle Anwendungen an.
  • Nutzen Sie die parallele Ausführung beim Delegieren an Cloud Coding Agents.

Batchupgrade bietet die folgenden Vorteile:

  • Konsistente Ausführung:

    • Standardisierter Ansatz: Wenden Sie die gleichen Modernisierungsmuster für alle Repositorys an.
    • Reduzierte Variabilität: Stellen Sie konsistente Upgradepfade für ähnliche Anwendungen sicher.
    • Wiederverwendbare Strategien: Verwenden Sie organisationsspezifische Fähigkeiten in allen Anwendungen.
  • Skalierung und Effizienz:

    • Parallele Verarbeitung: Verwenden Sie Cloud Coding Agents, um mehrere Repositorys gleichzeitig zu verarbeiten.
    • Automatisierte Workflows: Integration mit CI/CD-Pipelines für die geplante Modernisierung.
    • Zeitersparnis: Reduzieren Sie die Gesamtmodernisierungszeit von Wochen auf Stunden.

Voraussetzungen

  • Modernisieren Sie CLI.
  • Eine abgeschlossene Batchbewertung (empfohlen, aber nicht erforderlich).
  • Alle Repositorys verwenden dieselbe Programmiersprache (Java oder .NET).
  • Zugriff auf alle Repositorys, die Sie aktualisieren möchten.
  • GitHub Authentifizierung konfiguriert (gh auth login).

Von Bedeutung

Alle Repositorys in einem Batchupgrade müssen dieselbe Programmiersprache verwenden. Wenn ein Repository eine andere Sprache verwendet, kennzeichnet das Batchupgrade das Repository als fehlgeschlagen und überspringt es.

Konfigurieren von Repositorys

Der Modernisierungs-Agent unterstützt mehrere Möglichkeiten zum Angeben der Repositorys, die Sie aktualisieren möchten:

  • Aktueller Ordner: Aktualisieren Sie das Projekt in Ihrem aktuellen Arbeitsverzeichnis.
  • Manuelle Eingabe: Geben Sie lokale Verzeichnispfade oder Git-Remote-URLs direkt ein.
  • Repositorykonfigurationsdatei: Verwenden Sie eine JSON-Konfigurationsdatei, die alle Repositorys auflistet.

Konfigurationsdatei für das Repository

Erstellen Sie für Batchvorgänge in vielen Repositorys eine JSON-Konfigurationsdatei, um alle Repositorys auflisten zu können. Erstellen Sie es .github/modernize/repos.json beispielsweise in Ihrem Arbeitsverzeichnis, oder geben Sie einen benutzerdefinierten Pfad an.

Tipp

Für Beispielrepositorys müssen Sie sie zuerst verzweigen und sicherstellen, dass Sie über Administratorberechtigungen verfügen, um den Auftrag an Cloud Coding Agents zu delegieren.

Einfaches Format (Array von Repositorys):

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

Vollständiges Format (mit Verzweigungs- und lokalen Pfaden):

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

Jeder Repositoryeintrag unterstützt die folgenden Felder:

Feld Beschreibung Erforderlich
name Ein freundlicher Name des Repository (in Berichten und Dashboards verwendet). Ja
url Git Clone URL im HTTPS- oder SSH-Format. Einer von url oder path
path Absoluter lokaler Verzeichnispfad. Einer von url oder path
branch Branch zum Auschecken nach dem Klonen. No
description Menschenlesbare Beschreibung. No

Tipp

Sie können Repositorys aus verschiedenen Organisationen einschließen und unterschiedliche Authentifizierungsmethoden verwenden, solange Sie Zugriff haben.

Der Modernisierungs-Agent erkennt automatisch die Datei , wenn Sie "Aus einer Konfigurationsdatei" im interaktiven Modus auswählen. Sie können auch einen benutzerdefinierten Pfad angeben.

Auswählen des Ausführungsmodus

Batchupgrade unterstützt zwei Ausführungsmodi und zwei Interaktionsmethoden:

Ausführungsmodi

Lokale Ausführung

  • Am besten geeignet für: Testen, kleinere Repositorys (1-5 Repositorys) oder wenn Sie die lokale Steuerung bevorzugen.
  • Funktionsweise: Verarbeitet Repositorys sequenziell auf Ihrem lokalen Computer.
  • Setup erforderlich: Keine über die grundlegenden Voraussetzungen hinaus.
  • Unterstützt: Sowohl Git-URL- als auch lokale Pfad-Repositories.

Cloud Coding Agent-Delegierung

  • Am besten geeignet für: Unternehmensweite Vorgänge, große Portfolios (5+ Repos) oder parallele Verarbeitung.
  • Wie es funktioniert: Sendet Aufgaben an GitHub Cloud Coding Agents für die parallele Ausführung in der Cloud.
  • Setup erforderlich: MCP-Serverkonfiguration in jedem Repository (konfiguriert während des Setups).
  • Supports: Nur Repositorys mit GitHub-URLs (github.com). Lokale Pfade und Nicht-GitHub-Anbieter werden nicht unterstützt.

Von Bedeutung

Für die Delegierung von Cloud Coding Agenten müssen Repositorys über GitHub (github.com) Repository-URLs verfügen. Repositorys, die mit lokalen Pfaden angegeben oder auf nicht GitHub Anbietern (GitLab, Azure DevOps) gehostet werden, werden während der Clouddelegierung übersprungen. Verwenden Sie die lokale Ausführung für diese Repositorys.

Tipp

Durch die parallele Verarbeitung von Repositorys kann die Cloud Coding Agent-Delegierung die Gesamtmodernisierungszeit von Stunden zu Minuten reduzieren.

Interaktionsmethoden

Interaktiver Modus (TUI)

  • Geführte Erfahrung mit Menüs und Eingabeaufforderungen.
  • Am besten geeignet für Benutzer zum ersten Mal oder wenn Sie Optionen überprüfen möchten.
  • Unterstützt sowohl die lokale als auch die Cloudausführung.

Nicht-interaktiver Modus (CLI/headless)

  • Befehlszeilenbasiert, vollständig automatisiert.
  • Am besten geeignet für CI/CD-Pipelines und Automatisierung.
  • Unterstützt sowohl die lokale als auch die Cloudausführung mit --delegate cloud Flag.

Hinweis

Sie können jeden Ausführungsmodus mit jeder Interaktionsmethode kombinieren. Beispiel:

  • modernize → "Upgrade" auswählen (interaktiv, lokal)
  • modernize → wählen Sie "Upgrade → Delegate to Cloud Agents" (interaktiv, Cloud) aus.
  • modernize upgrade "Java 21" --source ./repos.json (nicht interaktiv, lokal)
  • modernize upgrade "Java 21" --source ./repos.json --delegate cloud (nicht interaktiv, Cloud)

Funktionsweise des Batchupgrades

Der Stapel-Upgrade-Workflow:

  1. Language detection: Erkennt automatisch die Projektsprache (Java oder .NET) aus dem ersten Repository.
  2. Planerstellung: Erstellt einen Upgradeplan basierend auf Ihrer Eingabeaufforderung oder verwendet die neuesten LTS-Versionen.
  3. Ausführung: Wendet das Upgrade auf jedes Repository an.
  4. Überprüfung: Erstellt und überprüft Änderungen für jedes Repository.

Batchupgrade ausführen

Nachdem Sie Ihre Repositorys konfiguriert und einen Ausführungsmodus ausgewählt haben, starten Sie das Batchupgrade.

Interaktiver Modus (lokal aktualisieren)

  1. Führen Sie den Modernisierungs-Agent aus:

    modernize
    
  2. Wählen Sie im Hauptmenü "Upgrade" aus.

    Screenshot der Modernize CLI, die das Hauptmenü mit der Option

  3. Wählen Sie aus, wie Ihre Zielrepositorys angegeben werden sollen. Wählen Sie "Aus einer Konfigurationsdatei " aus, um eine repos.json Datei zu verwenden.

    Screenshot der Modernize CLI, die die Auswahl des Quelltyps im Terminal zeigt.

    Tipp

    Sie können auch manuelle Eingaben auswählen, um lokale Pfade oder Remote-Git-URLs direkt einzugeben, oder den aktuellen Ordner , um das Projekt in Ihrem aktuellen Verzeichnis zu aktualisieren.

  4. Wenn die repos.json Datei am Standardspeicherort erkannt wird, füllt der Agent sie automatisch aus. Geben Sie andernfalls den Pfad zu Ihrer Konfigurationsdatei ein, und drücken Sie die EINGABETASTE.

  5. Alle Repositorys sind standardmäßig ausgewählt. Deaktivieren Sie alle Repositorys, die Sie überspringen möchten, und drücken Sie dann die EINGABETASTE , um Ihre Auswahl zu bestätigen.

    • Verwenden Sie pfeiltasten , um zu navigieren und die LEERTASTE zu drücken, um einzelne Repositorys umzuschalten.

    Screenshot der Modernize CLI, die die Liste

  6. Wählen Sie den Ausführungsmodus aus. Wählen Sie "Lokal aktualisieren" aus.

    Screenshot der Modernize CLI, die die Option

  7. Geben Sie die Upgradezielaufforderung ein (z. B. Java 21 oder .NET 10), oder drücken Sie Enter, um die Standardversion (neueste LTS-Version) zu akzeptieren.

  8. Der Agent arbeitet automatisch:

    • Erstellt einen Upgradeplan basierend auf Ihrer Anforderung.
    • Wendet den Plan auf jedes Repository sequenziell an.
    • Erstellt und überprüft jedes Repository nach Änderungen.
    • Zeigt Fortschritt und Zusammenfassung für jedes Repository an.

    Screenshot der Modernize CLI, die den Upgradefortschritt für jedes Repository im Terminal anzeigt.

Interaktiver Modus (Delegieren an Cloud Coding Agents)

Voraussetzungen: Konfigurieren des MCP-Servers

Konfigurieren Sie vor dem Ausführen des Upgrades den GitHub Copilot Modernisierungs-MCP-Server in jedem Repository.

Zu Java Anwendungen fügen Sie diese Konfiguration im Abschnitt "Cloud Coding Agent" Ihrer Repositoryeinstellungen hinzu:

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

Screenshot von GitHub, der den Einstellungsbereich für den Repository-Coding-Agent zeigt, wobei der MCP-Konfigurationsabschnitt hervorgehoben ist.

Schritte

  1. Führen Sie den Modernisierungs-Agent aus:

    modernize
    
  2. Wählen Sie im Hauptmenü "Upgrade" aus.

    Screenshot der Modernize CLI, die das Hauptmenü mit der Option

  3. Wählen Sie aus, wie Ihre Zielrepositorys angegeben werden sollen. Wählen Sie aus einer Konfigurationsdatei aus.

    Screenshot der Modernize CLI, die die Auswahl des Quelltyps im Terminal zeigt.

  4. Wenn die repos.json Datei am Standardspeicherort erkannt wird, füllt der Agent sie automatisch aus. Geben Sie andernfalls den Pfad zu Ihrer Konfigurationsdatei ein, und drücken Sie die EINGABETASTE.

  5. Alle Repositorys sind standardmäßig ausgewählt. Deaktivieren Sie alle Repositorys, die Sie überspringen möchten, und drücken Sie dann die EINGABETASTE , um Ihre Auswahl zu bestätigen. Verwenden Sie pfeiltasten, um zu navigieren und die LEERTASTE zu drücken, um einzelne Repositorys umzuschalten.

    Screenshot der Modernize CLI, die die Repositoryliste im Terminal anzeigt.

  6. Wählen Sie den Ausführungsmodus aus. Wählen Sie "An Cloud-Agents delegieren" aus.

    Screenshot von Modernize CLI, das die Menüoption

  7. Geben Sie die Aktualisierungszielaufforderung ein (z. B. Java 21), oder drücken Sie Enter, um die Standardeinstellung zu übernehmen.

  8. Der Agent arbeitet automatisch:

    • Erstellt Upgradepläne für jedes Repository.

    • Sendet einen Cloud Coding Agent-Auftrag für jedes Repository.

    • Führt Aufträge unabhängig parallel in der Cloud aus.

    • Zeigt Auftrags-IDs und PR-URLs für jedes Repository an.

      Screenshot der Modernize CLI, die den Fortschritt der Delegierung von Upgrades an Cloud Coding Agents im Terminal zeigt.

    • Delegiert Aufgaben für die parallele Ausführung an AgentHQ.

      Screenshot von GitHub, das den Bereich

    • Verfolgt den Fortschritt für jeden einzelnen Vorgang in Echtzeit.

      Screenshot von GitHub, in dem der Bereich

    • Zeigt die Upgradezusammenfassung für jede abgeschlossene Aufgabe an.

      Screenshot von GitHub, in dem der Bereich

Nicht interaktiver Modus (CLI)

Verwenden Sie für die Automatisierungs- und CI/CD-Integration den modernize upgrade Befehl:

Führen Sie ein lokales Upgrade mit einer Repositorykonfigurationsdatei durch:

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

Aktualisieren Sie mehrere Repositorys, indem Sie Quellen direkt angeben:

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

Upgrade mit Cloud Coding Agents:

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

Hinweis

Informationen zur Batchkopflose Ausführung und weitere CLI-Optionen finden Sie im Abschnitt "Konfiguration mehrerer Repositorys " in der CLI-Befehlsreferenz.

Überprüfen der Ergebnisse

Nach Abschluss des Batchupgrades:

  1. Überprüfen Sie den aggregierten Bericht , der im Terminal angezeigt wird.

  2. Überprüfen sie einzelne Repositoryänderungen:

    cd <repository-name>
    git status
    git diff
    
  3. Erstellen von Pullanforderungen für erfolgreiche Upgrades:

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

Problembehandlung bei Batchupgrades

Häufige Probleme

Fehler beim Repositoryzugriff:

  • Überprüfen Sie GitHub Authentifizierung mithilfe von gh auth status.
  • Stellen Sie sicher, dass Sie Zugriff auf alle Repositorys haben in repos.json.

Fehler bei der Sprachübereinstimmung:

  • Stellen Sie sicher, dass alle Repositorys in repos.json dieselbe Sprache verwenden (Java oder .NET).
  • Erstellen Sie separate Batchvorgänge für verschiedene Sprachen.

Klonfehler:

  • Überprüfen Sie, ob die Repository-URLs in repos.json korrekt und zugänglich sind.
  • Stellen Sie sicher, dass Sie über die richtigen Zugriffsberechtigungen für alle Repositorys verfügen.
  • Überprüfen Sie die Netzwerkkonnektivität und VPN-Einstellungen.

Buildfehler nach dem Upgrade:

  • Überprüfen Sie Buildfehlermeldungen im aggregierten Bericht.
  • Überprüfen Sie, ob Sie andere Abhängigkeiten aktualisieren müssen.
  • Überprüfen Sie die Kompatibilität von Drittanbieterbibliotheken mit der neuen Version.

Einzelne Repositoryfehler:

  • Der Batchvorgang wird auch dann fortgesetzt, wenn einzelne Repositorys fehlschlagen.
  • Überprüfen Sie den aggregierten Bericht, um fehlerhafte Repositorys zu identifizieren.
  • Überprüfen Sie Fehlerprotokolle auf bestimmte Fehlermeldungen.
  • Wiederholen Sie fehlgeschlagene Repositorys einzeln.

Cloud Coding Agent-Fehler:

  • Überprüfen Sie GitHub Actions Berechtigungen und Kontingentbeschränkungen.
  • Stellen Sie für .NET Framework sicher, dass Windows Runner-Konfiguration ordnungsgemäß festgelegt ist.

Nächste Schritte

Nach Abschluss des Batchupgrades können Sie:

Weiter verbessern:

Weitere Informationen:

Feedback geben

Wir schätzen Ihre Eingabe! Wenn Sie Feedback zum Batchupgrade oder zum Modernisierungs-Agent haben, erstellen Sie ein Problem im Github-copilot-appmod-Repository oder verwenden Sie das GitHub Copilot Modernisierungsfeedbackformular.