Modernisierungsplan bei Verwendung von GitHub Copilot für die Modernisierung anpassen

In diesem Artikel wird beschrieben, wie Sie den von GitHub Copilot Modernisierung generierten Modernisierungsplan für die Migration von Java und .NET Anwendungen zu Azure anpassen.

Sie können eine Modernisierungssitzung initiieren, indem Sie einen Plan für den Bewertungsbericht durch Mehrfachauswahlprobleme erstellen oder auf Migrate zu Azure klicken, um einen Modernisierungsplan über die Randleiste zu erstellen und auszuführen. Wenn Sie eine Modernisierungssitzung initiieren, generiert GitHub Copilot eine datei plan.md (und eine Begleitdatei .metadata/tasks.json), die das Migrationsziel, den Umfang, die aktuelle und die Zielarchitektur und die Aufgabenliste beschreibt. Dieses Dateipaar dient als Blueprint, den der Modernisierungs-Agent ausführt. Sie können den Plan vor der Ausführung verfeinern, um die Anforderungen Ihres Projekts besser zu erfüllen.

Nachdem der Agent plan.md generiert hat, wird er automatisch im Visual Studio Code-Editor geöffnet. In dieser Phase können Sie den Plan überprüfen und anpassen, um sicherzustellen, dass er ihren spezifischen Modernisierungszielen entspricht.

Important

Passen Sie den Plan durch prompting Copilot an, um den Plan neu zu generieren oder zu aktualisieren anstatt plan.md direkt zu bearbeiten. Direkte Bearbeitungen an plan.md aktualisieren nicht die zugehörige tasks.json-Datei, die die Ausführung steuert, und die beiden Dateien können auseinanderlaufen. Das empfohlene Vorgehen in jedem Abschnitt unten lautet: „Sagen Sie Copilot, was geändert werden soll, und lassen Sie es dann neu generieren.“

Beispiel plan.md Dateistruktur

Der Agent generiert eine plan.md Datei mit den folgenden Abschnitten. Dieselbe Struktur wird für Java- und .NET Projekte verwendet.

Abschnitt Purpose Anpassbar per Prompt
Projektkopfzeile Projektname und Titel der Modernisierung. Ja – Passen Sie den Titel an, um die Welle oder den Bereich widerzuspiegeln.
Technischer Rahmen Aktuelle Sprache, Framework, Buildtool, Datenbank und wichtige Abhängigkeiten, die aus dem Quellcode erkannt wurden. Indirekt – korrigieren Sie alle falsch erkannten Fakten, indem Sie Copilot entsprechend anweisen.
Overview Narrative Beschreibung des Modernisierungsziels: Was ändert sich, warum und der phasenweise Ansatz. Geschäftsseitig, keine technischen Details. Ja – klären Sie geschäftsbezogene Absichten, fügen Sie Aufzählungszeichen hinzu oder entfernen Sie sie.
Zusammenfassung der Auswirkungen auf die Migration Eine Tabelle mit der Zuordnung jeder Anwendung × jedes ursprünglichen Dienstes → zu einem neuen Azure-Dienst, der Authentifizierungsmethode und Kommentaren. Ja – Zieldienst ändern, Authentifizierung ändern, Zeilen hinzufügen oder entfernen.
Offene Fragen & Fragebogen Klärungsfragen, die während der Planungerstellung und der Antworten des Benutzers aufgeworfen wurden. Steuert die Aufgabenauswahl. Ja - antworten Sie offene Fragen, überarbeiten Sie frühere Antworten.

Die detaillierte Aufgabenliste befindet sich nicht in plan.md. Es lebt in .metadata/tasks.json und wird aus Ihren Antworten im Abschnitt "Open Questions & Fragebogen " sowie der Analyse des Agenten generiert. Um Vorgänge zu ändern, fordern Sie Copilot auf, den Plan neu zu generieren (siehe How to customize).

Was Sie anpassen können

Der Modernisierungsplan macht vier Anpassungsflächen verfügbar. Jedes verweist auf einen Abschnitt von plan.md und wird über eine Eingabe an Copilot statt durch direkte Bearbeitung erreicht.

1. Modernisierungsbereich

Der Bereich bestimmt, welche Arten von Aufgaben der Agent generiert. Der Plan unterstützt vier Bereichstypen:

  • Upgrade – Laufzeit- und Frameworkversionsupgrades (z. B. JDK 11 → 17, Spring Boot 2.x → 3.x, .NET Framework → .NET 8).
  • Migration in Azure – Ersetzen eines lokalen oder nicht Azure Diensts durch eine Azure Entsprechung (z. B. Oracle → Azure Database for PostgreSQL, ActiveMQ → Azure Service Bus, hartcodierte Geheimschlüssel → Azure Key Vault).
  • Containerisierung – Generieren einer Dockerfile-Datei und verwandter Buildartefakte.
  • Deployment – Generieren von Bereitstellungsdateien und Bereitstellen für Azure. Bereitstellungsaufgaben umfassen implizit die Containerisierung.

Um den Bereich anzupassen, teilen Sie Copilot mit, welche Bereichstypen für diese Ausführung gelten. Beispiel:

For this modernization plan, only include Upgrade and Migration to Azure tasks. Do not generate containerization or deployment tasks — those are handled by a separate pipeline.

2. Ziel-Azure Dienste und Authentifizierung

Die Tabelle Migration Impact Summary zeichnet die Ziel-Azure Dienst- und Authentifizierungsmethode für jede migrierte Komponente auf. Passen Sie diese Werte an, indem Sie Copilot vor oder nach dem Generieren des ursprünglichen Plans auffordern. Beispiel:

Update the Migration Impact Summary:
- Use Azure Container Apps as the deployment target, not Azure Kubernetes Service.
- Use Managed Identity for the PostgreSQL connection. Do not use Key Vault for the DB password.
- Migrate file-based logging to Azure Monitor (Application Insights), not to console-only.

Der Agent regeneriert beides plan.md und tasks.json so bleibt die Aufgabenliste mit der Tabelle konsistent.

3. Fragebogenantworten

Wenn dem Agenten die Funktion ask_user zur Verfügung steht, stellt er einen kurzen Fragenkatalog, um den Umfang des Plans festzulegen. Die drei Standardfragen sind:

Frage Standardantwort Auswirkungen auf den Plan
Bereitstellungsziel für Azure Keine Bereitstellung Fügt eine Bereitstellungsaufgabe hinzu (oder lässt sie weg) und wählt den Ziel-Computedienst aus (Azure Container Apps, Azure Kubernetes Service, Azure App Service, App Service verwaltete Instanz, Azure Function Apps, Azure Static Web Apps).
Integrationstests einschließen? No Wenn sie auf "Ja, lokale Integration mit Containern" oder "Ja, lokale Integration und Rauchtests" festgelegt ist, wird nach den Migrationsaufgaben und vor der Containerisierung eine Integrationstestaufgabe hinzugefügt.
Containerisierung einschließen (Dockerfile-Generation)? No Fügt eine eigenständige Containerisierungsaufgabe hinzu. Wird automatisch übersprungen, wenn eine Deployment-Aufgabe ausgewählt ist, da das Deployment die Containerisierung umfasst.

Wenn der Agent keine Frage gestellt hat (z. B. weil ask_user nicht verfügbar war) oder Sie eine frühere Antwort ändern möchten, bitten Sie Copilot. Beispiel:

Update the plan with these answers:
- Deployment target: Azure Container Apps
- Integration testing: Yes, Local Integration and Smoke Tests
- Containerization: handled by deployment task, no standalone containerization needed

Die Antworten werden im Abschnitt "Offene Fragen und Fragebogen " als eingecheckte Elemente aufgezeichnet und steuern die Aufgabenauswahl.

4. Hinzufügen, Entfernen oder Verfeinern bestimmter Aufgaben

Sie können Copilot bitten, einen Vorgang hinzuzufügen, der nicht generiert wurde, einen nicht gewünschten Vorgang abzulegen oder den Bereich eines vorhandenen Vorgangs anzupassen. Geben Sie die Intention an – lassen Sie Copilot die passende Fähigkeit und das passende Muster aus seiner Wissensdatenbank auswählen.

Beispiele:

Add a task to migrate from ActiveMQ to Azure Service Bus.
Drop the integration test task — we have an existing test suite that covers this.
The Spring Boot upgrade task should target Spring Boot 3.2 specifically, not "latest".

Hinweis

Der Agent erstellt nur Aufgaben für Migrationen, für die er über ein passendes Qualifikations- oder Muster verfügt. Wenn Sie eine Migration anfordern, die der Agent nicht unterstützen kann (z. B. einen internen proprietären Dienst), wird dem Bereichsbereich eine Warnung hinzugefügt, und die Aufgabe wird nicht hinzugefügt. Behandeln Sie die Migration in diesem Fall als manuellen Schritt, und fügen Sie eine Richtlinienanweisung (siehe den nächsten Abschnitt) hinzu, um sie zu dokumentieren.

So passen Sie es an: Copilot zum erneuten Generieren auffordern

Verwenden Sie den folgenden Workflow:

  1. Überprüfen Sie das erste plan.md, nachdem der Agent es generiert hat.
  2. Identifizieren Sie, was Sie ändern möchten – Bereich, Zieldienst, Authentifizierung, Fragebogenantworten oder bestimmte Aufgaben.
  3. Fordern Sie Copilot mit der Änderung auf. Seien Sie spezifisch: Benennen Sie den Abschnitt und das gewünschte Ergebnis.
  4. Lassen Sie Copilot plan.md und .metadata/tasks.json zusammen erneut generieren. Beide Dateien müssen so ausgerichtet bleiben, dass die Ausführung funktioniert.
  5. Überprüfen Sie den aktualisierten Plan erneut. Wiederholen Sie den Vorgang, bis Umfang, Zielarchitektur und Aufgabenliste Ihren Vorstellungen entsprechen.

Beispiel für einen End-to-End-Prompt:

Update the modernization plan with these changes:
1. Add Migration to Azure scope for messaging — migrate ActiveMQ to Azure Service Bus.
2. Use Managed Identity for all Azure service connections; do not introduce Key Vault.
3. Deployment target is Azure Container Apps.
4. Include Layer 1 and Layer 2 integration tests.
5. The Spring Boot upgrade task should explicitly include the JDK 17 and Jakarta EE migration in its description, as a single task (do not split).

Copilot generiert den Plan neu, aktualisiert die Tabelle, erfasst die Antworten auf den Fragebogen und überarbeitet die Aufgabenliste entsprechend.

Bereitstellen von Richtlinien für die Ausführung

Stellen Sie Copilot zusätzlich zu Umfang und Aufgaben Richtlinien bereit – Methodik, Konventionen, Werkzeuge und Regeln –, die festlegen, wie die Modernisierung umgesetzt wird. Fügen Sie Richtlinien am häufigsten als Guidelines Abschnitt im Plan oder als Verweise auf lokale Regeldateien hinzu.

Fügen Sie alle Anweisungen hinzu, mit denen Sie steuern können, wie Copilot Code ändert, z. B.:

  • Einschränkungen oder Verbote bestimmter Migrationsansätze (z. B. don führen keine Spring Cloud Azure Starter ein; verwenden Sie die nativen SDKs).
  • Codeformat- oder Konventionsanforderungen.
  • Links zu internen Dateien, Dokumentationen oder Skripts, auf die der Agent zugreifen kann.
  • Domänenwissen ist hilfreich, um Fehler zu beheben oder Migrationen auszuführen.
  • Anforderungen daran, wie der Agent Codeänderungen annotieren oder kommentieren soll.
  • Bereinigungsanweisungen für temporäre Artefakte, die während der Ausführung erstellt wurden.

Beispiel:

Add these guidelines to the plan:
- Use Azure Managed Identity for every Azure service connection. Do not introduce connection strings or Key Vault secrets unless a service has no Managed Identity support.
- Follow the code conventions defined in `/docs/internal/code-style.md`.
- Provide detailed comments explaining why each code change is necessary.
- After execution, remove any temporary scripts or scratch files created during migration.

Siehe auch