Batch-Bewertung mit dem GitHub Copilot Modernisierungsagent

Mithilfe der Batchbewertung können Sie mehrere Anwendungen gleichzeitig analysieren und eine umfassende Übersicht über die Modernisierungslandschaft in Ihren Anwendungen bereitstellen. Dieser Artikel führt Sie durch den Prozess der effizienten Bewertung mehrerer Repositorys.

Die Batchbewertung ist besonders für die Migrationsplanung nützlich, da sie es Ihnen ermöglicht, die Bereitschaft und Anforderungen verschiedener Anwendungen gleichzeitig effizient zu bewerten. Mithilfe der Batchbewertung können Sie verschiedene Repositorys gleichzeitig auswerten und detaillierte Bewertungsberichte für jede Anwendung abrufen. Es erstellt zwei Arten von Berichten zur Unterstützung Ihrer Migrationsplanung:

  • Pro App-Bericht: Bietet detaillierte Einblicke in alle Modernisierungsprobleme, die auf Ebene einzelner Repositories identifiziert wurden.
  • Aggregated-Bericht: Stellt eine Gesamtperspektive aller bewerteten Anwendungen dar, bietet zusammenfassende Einblicke, Empfehlungen zu Azure Diensten, Zielplattformen und Upgradepfaden. Darüber hinaus enthält der aggregierte Bericht Tastenkombinationen für den einfachen Zugriff auf jeden App-Bericht.

Die Batchbewertung bietet die folgenden Vorteile:

  • Anwendungsübergreifende Sichtbarkeit:

    • Aggregierte Berichte: Erhalten Sie eine umfassende Ansicht für alle Anwendungen.
    • Repositoryübergreifende Analyse: Identifizieren allgemeiner Muster und Abhängigkeiten in allen Anwendungen.
    • Priorisierungserkenntnisse: Verstehen, welche Anwendungen sofortige Aufmerksamkeit benötigen.
  • Skalierung und Effizienz:

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

Voraussetzungen

  • Modernisieren Sie CLI.
  • Zugriff auf alle Repositorys, die Sie bewerten möchten.
  • GitHub Authentifizierung ist konfiguriert (gh auth login).

Konfigurieren von Repositorys

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

  • Aktueller Ordner: Bewerten 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.

Stellen Sie sicher, dass Sie über die richtigen Berechtigungen für die Repositories verfügen oder diese forken.

Einfaches Format (Array von Repositorys):

[
  {
    "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"
  }
]

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

Vollständiges Format mit App-Gruppierung (optional, für organisierte Berichte):

Sie können einen apps[] Abschnitt hinzufügen, um Repositorys zu logischen Anwendungen zusammenzufassen. Wenn Apps definiert sind, organisiert der aggregierte Bericht Ergebnisse nach Anwendung und unterstützt die Berichtsverteilung an externe Ziele.

{
  "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"
      }
    }
  ]
}

Jeder App-Eintrag unterstützt Folgendes:

Feld Beschreibung Erforderlich
identifier Eindeutiger Anzeigename der Anwendung. Ja
description Menschenlesbare Beschreibung. No
repos Liste der Repositorynamen, die zu dieser App gehören. Ja
output Wo der Bewertungsbericht dieser App nach der Generierung verteilt werden soll. No

Das output Feld unterstützt die folgenden Verteilungstypen:

Typ Beschreibung Pflichtfelder
local Kopieren Sie Berichte in ein lokales Verzeichnis. path
git Pushberichte an ein Git-Repository. Das URL-Format ist https://github.com/org/repo.git#branch:path. url

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.

Batchbewertung ausführen

Es stehen zwei Ausführungsmodi zur Verfügung:

  • Lokale Ausführung: Der Modernisierungs-Agent verarbeitet Repositorys nacheinander auf Ihrem lokalen Computer. Dieser Modus eignet sich am besten für eine kleinere Gruppe von Anwendungen oder für erste Tests. Unterstützt sowohl Git-URLs als auch lokale Pfad-Repositorys.
  • Cloud Coding Agent-Delegierung: Der Modernisierungs-Agent sendet Aufgaben an GitHub Cloud Coding Agents zur parallelen Verarbeitung in der Cloud. Dieser Modus ist für Szenarien mit mehreren Repositorys schneller.

Von Bedeutung

Für die Delegierung von Cloud Coding Agenten müssen Repositorys über GitHub (github.com) Repository-URLs verfügen. Lokale Pfadrepositorys und Nicht-GitHub-Anbieter (GitLab, Azure DevOps) werden für die Clouddelegierung nicht unterstützt. Verwenden Sie die lokale Ausführung für diese Repositorys.

Tipp

Mithilfe der Cloud Coding Agent-Delegierung aktivieren Sie die parallele Ausführung in allen Repositorys. Dieser Ansatz reduziert die Gesamtbewertungszeit für große Portfolios erheblich.

Interaktiver Modus (lokal bewerten)

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

    modernize
    
  2. Wählen Sie im Hauptmenü "Bewerten" 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 bewerten.

  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 "Lokal bewerten" aus.

    Screenshot der Modernize CLI, die das Bewertungsmodusmenü im Terminal zeigt.

  7. Wählen Sie die zu analysierenden Bewertungsdomänen aus. Wählen Sie aus Java Upgrade und Cloud Readiness aus, und drücken Sie dann Enter.

    Screenshot der Modernize CLI, die die Bewertungsdomänenauswahl im Terminal zeigt.

  8. Überprüfen und konfigurieren Sie die Bewertungsoptionen. Auf der Konfigurationsseite sind Optionen nach Sprache und Domäne gruppiert:

    • Java / GENERAL: Analyseabdeckung (nur Probleme, Probleme & Technologien, oder Probleme, Technologien & Abhängigkeiten).
    • Java/JAVA UPGRADE: Target Runtime (OpenJDK 11, 17 oder 21).
    • Java / CLOUD READINESS: Target Compute Services, Target Operating System und Containerisierung.
    • .NET / CLOUD READINESS: Target Compute Services.

    Verwenden Sie die Pfeiltasten, um zu navigieren, drücken Sie die EINGABETASTE , um einen Wert zu ändern, oder wählen Sie "Weiter" , um mit den aktuellen Einstellungen fortzufahren.

    Screenshot der Modernize CLI, die die Bewertungskonfigurationsseite im Terminal zeigt.

    Tipp

    Die empfohlenen Standardwerte funktionieren für die meisten Szenarien. Sie müssen diese Einstellungen nur ändern, wenn Sie bestimmte Anforderungen haben, z. B. für eine bestimmte JDK-Version oder Azure Computedienst.

  9. Geben Sie den Ausgabepfad für Bewertungsergebnisse ein, oder drücken Sie die EINGABETASTE , um die Standardeinstellung zu übernehmen.

  10. Der Agent arbeitet automatisch:

    • Klonen von Remote-Repositories (lokale Repositories im Pfad werden direkt verwendet).

    • Führt die Bewertung für jedes Repository einzeln aus.

    • Generiert einzelne Bewertungsberichte.

      Screenshot der Modernize CLI, die die Ausgabe der Erstellung einzelner Bewertungsberichts im Terminal zeigt.

    • Erstellt einen aggregierten Bericht.

      Screenshot der Modernize CLI, die die Ausgabe der aggregierten Berichtsgenerierung im Terminal zeigt.

  11. Nach Abschluss der Bewertung öffnet der Agent automatisch den aggregierten Bericht.

    Screenshot der Modernize CLI, die den Inhalt des aggregierten Berichts zeigt.

Interaktiver Modus (Delegieren an Cloud Coding Agents)

Konfigurieren Sie zunächst Cloud Coding Agents in jedem Anwendungs-Repository. Um Cloud Coding Agents zu konfigurieren, forken Sie die Beispiel-Repositories.

Konfiguration für .NET Anwendungen

Konfigurieren für die Ausführung auf Windows für .NET Framework-Anwendungen

Standardmäßig wird der Copilot Coding Agent in einer Ubuntu Linux-Umgebung ausgeführt. Für .NET Framework-Anwendungen benötigen Sie eine Windows Umgebung. Um es zu aktivieren, konfigurieren Sie .github/workflows/copilot-setup-steps.yaml in der main Verzweigung Ihres Anwendungs-Repositorys, wie im folgenden Beispiel gezeigt:

# 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

Weitere Informationen finden Sie unter: Anpassen der Copilot-Entwicklungsumgebung mit den Copilot-Einrichtungsanweisungen

Firewall deaktivieren

Deaktivieren Sie die integrierte Firewall des Copilot-Codierungsagents in den Einstellungen Ihres Repositories, wie in der Abbildung unten dargestellt.

Screenshot von GitHub, der die Repository-Einstellungen mit der Einstellung

Konfiguration für Java Anwendungen

Konfigurieren Sie den GitHub Copilot Modernization MCP-Server im Abschnitt 'Cloud Coding Agent' Ihrer Repository-Einstellungen, wie im folgenden Beispiel veranschaulicht:

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

Screenshot von GitHub, der die Einstellungen für den Codierungs-Agent für Repositories zeigt und in dem der MCP-Konfigurationsabschnitt hervorgehoben ist.

Schritte

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

    modernize
    
  2. Wählen Sie im Hauptmenü "Bewerten" 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 Ab einer Konfigurationsdatei aus, um eine datei repos.json zu verwenden, oder wählen Sie Manual input aus, um GitHub Repository-URLs direkt einzugeben.

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

  4. Wenn Sie "Aus einer Konfigurationsdatei" ausgewählt haben und 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 des Modernize CLI, das das Bewertungsmenü mit der Option

    Hinweis

    Wenn Sie an Cloud Coding Agents delegieren, werden die Schritte für die Domänenauswahl und die Bewertungskonfiguration nicht unterstützt. Der Cloud-Agent verwendet die Standardkonfigurationen, um die Bewertung auszuführen.

  7. Geben Sie den Ausgabepfad für Bewertungsergebnisse ein, oder drücken Sie die EINGABETASTE , um die Standardeinstellung zu übernehmen.

  8. Der Agent delegiert automatisch Bewertungsaufgaben für jedes Repository an Cloud Coding Agents und führt sie parallel in der Cloud aus.

    Screenshot der Modernize CLI, die die Ausgabe des Fortschritts der Delegierung der Bewertung an Cloud Coding Agents im Terminal zeigt.

    Der Agent ruft die Ergebnisse der Bewertung pro App zurück in das lokale Land und generiert den aggregierten Bericht lokal.

    Screenshot der Modernize CLI, die die Aggregating Assessment Reports im Terminal zeigt.

  9. Nach Abschluss der Bewertung öffnet der Agent automatisch den aggregierten Bericht.

Nicht interaktiver Modus (CLI)

Sie können auch nicht interaktiven Modus verwenden, indem Sie Befehlsargumente direkt angeben. Verwenden Sie den Befehl modernize assess:

Lokal mithilfe einer Repositorykonfigurationsdatei bewerten:

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

Bewerten Sie mehrere Repositorys, indem Sie Quellen direkt angeben:

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

Bewerten Sie, indem Sie Cloud Coding Agents einsetzen:

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

Weitere Informationen finden Sie unter bewerten - CLI-Befehle.

Grundlegendes zum aggregierten Bericht

Der aggregierte Bericht bietet eine umfassende Übersicht über bewertete Anwendungen wie folgt:

Dashboard

  • Momentaufnahme des Portfoliostatus: Gesamtanzahl von Apps, Anzahl der benötigten Upgrades und Aggregierter Blocker und Problemanzahl.
  • Technologieverteilung: Welche Frameworks verwendet werden und wie viele Apps sie teilen.
  • Aufwandsverteilung: Ob die gesamte Migration ein kleines oder großes Vorhaben ist.

Empfehlungen

  • Azure-Dienste: ordnet aktuelle Abhängigkeiten den empfohlenen Azure-Entsprechungen zu. Gemeinsame Abhängigkeiten zwischen Apps werden einmal festgelegt, sodass Sie eine wiederholte Anpassung jeder einzelnen App vermeiden.
  • Zielplattform: führt die Hostingauswahl, z. B. Azure Container Apps im Vergleich zu AKS, und zeigt Konsolidierungsmöglichkeiten an.
  • Upgradepfad: Gibt an, welche Apps Frameworkupgrades als Voraussetzung benötigen, wodurch die Upgradearbeit von der Migrationsarbeit getrennt wird.
  • Migrationswellen: Sequenziert Apps nach Bereitschaft und Risiko in Phasen. Dieser Ansatz ermöglicht frühzeitige Gewinne, während härtere Apps parallel vorbereitet werden.

Anwendungsbewertungsmatrix

  • Schnelle Übersicht über jede Anwendung hinsichtlich der Aspekte Framework, Zielplattform, Upgradeempfehlung, Aufschlüsselung der Probleme (Verpflichtend, Mögliches, Optional), Größenbestimmung des Aufwands und mehr.
  • Links zu einzelnen App-Berichten für vertiefte Einblicke bei Bedarf.

Problembehandlung bei der Batchbewertung

Häufige Probleme

Fehler beim Repositoryzugriff:

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

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 Ihre Netzwerkkonnektivitäts- und VPN-Einstellungen.

Bewertungsfehler:

  • Überprüfen Sie, ob das Repository gültige Java oder .NET Projekte enthält.
  • Stellen Sie sicher, dass Builddateien wie pom.xml, build.gradle, *.csproj, *.sln oder *.slnx vorhanden sind.
  • Überprüfen Sie Fehlermeldungen in der Konsolenausgabe.

Delegierungsprobleme des Cloud Coding-Agents:

  • Stellen Sie sicher, dass Sie über die richtigen Berechtigungen zum Erstellen GitHub Actions Workflows verfügen.
  • Überprüfen Sie GitHub Actions Berechtigungen und Kontingentbeschränkungen für Ihre Organisation.
  • Stellen Sie für .NET Framework-Apps sicher, dass Windows Runner-Konfiguration ordnungsgemäß festgelegt ist.
  • Überprüfen Sie ihre MCP-Serverkonfiguration.

Nächste Schritte

Nach Abschluss der Batchbewertung haben Sie folgende Möglichkeiten:

Den Modernisierungsworkflow fortsetzen:

Weitere Informationen:

Feedback geben

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