Batchutvärdering med GitHub Copilot moderniseringsagent

Med Batch-utvärdering kan du analysera en portfölj med Java, .NET och JavaScript/TypeScript program i en enda körning. Du får en omfattande vy över moderniseringslandskapet i dina program. Den här artikeln vägleder dig genom processen att utvärdera flera lagringsplatser effektivt. Processen stöder både lagringsplatser med ett enda språk och mono-repos som innehåller en blandning av Java- .NET- och JavaScript-/TypeScript-projekt.

Varje program analyseras längs två kompletterande spår. Genomsökning av problem hittar problem som du behöver åtgärda. Codebase-insikter dokumenterar hur programmet skapas så att du kan planera runt det.

Problemgenomsökning

Genomsökning av problem identifierar moderniserings- och säkerhetsproblem i tre domäner. Språktäckningen skiljer sig åt beroende på domän:

  • Uppgradera – körnings- och ramverksversionsanalys. Omfattar Java och .NET.
  • Cloud Readiness – Azure problem med anpassning och migrering av målplattformen. Omfattar Java och .NET.
  • Säkerhet – CVE-genomsökning över direkta och transitiva beroenden, plus ISO 5055-guidade CWE-säkerhetsproblem . Java endast just nu; stöd för .NET och JavaScript/TypeScript finns med i översikten.

Codebase-insikter

Codebase Insights dokumenterar hur varje program skapas. De produceras för projekt Java, .NET och JavaScript/TypeScript. De visas när du väljer Fullständig analys i inställningen Analystäckning.

  • Arkitektur – arkitekturdiagram på hög nivå med skiktning, modulgränser, runtime-topologi och startpunkter.
  • API-kontrakt – REST-, gRPC-, meddelandekö- och webhook-gränssnitt som appen exponerar eller använder. Bedömer integrationens påverkansområde före migrering.
  • Konfiguration – konfigurationsfiler, miljövariabler, funktionsflaggor, anslutningssträngar och hemligheter. Driver migreringen av hemligheter och konfiguration till Azure Key Vault och Azure App Configuration.
  • Affärsarbetsflöden – funktionella flöden från slutpunkt till slutpunkt som rekonstruerats från kod (till exempel order → reservera → betala → uppfylla). Fäster regressionsomfånget och intressenternas kommunikation.
  • Beroenden — direkta och transitiva bibliotek, SDK:er och drivrutiner med låsta versioner. Matar mappningen av Azure-tjänster och visar EOL- eller betamarkeringar.
  • Datamodell – databaser, scheman, nyckelentiteter och relationer från ORM-mappningar och DDL. Driver migreringsplanering på datanivå.

Rapporter

Batchutvärdering är särskilt värdefull för migreringsplanering eftersom du på ett effektivt sätt kan utvärdera beredskapen och kraven för olika program samtidigt. Genom att använda batchutvärdering kan du utvärdera olika lagringsplatser samtidigt och få detaljerade utvärderingsrapporter för varje program. Den skapar två typer av rapporter som stöder migreringsplaneringen:

  • Rapport per lagringsplats: Ger detaljerade insikter om de två aspekter som identifieras på den enskilda lagringsplatsens nivå.
  • Aggregated report: Presenterar ett övergripande perspektiv på alla utvärderade program, med sammanfattningsinsikter, rekommendationer om Azure tjänster, målplattformar, uppgraderingsvägar, migreringsstrategier och migreringsvågor. Dessutom innehåller den aggregerade rapporten genvägar för enkel åtkomst till varje rapport per lagringsplats.

Batch-utvärdering ger följande fördelar:

  • Synlighet mellan program:

    • Sammanställda rapporter: Få en omfattande vy över program.
    • Analys mellan lagringsplatser: Identifiera vanliga mönster och beroenden mellan program.
    • Prioriteringsinsikter: Förstå vilka program som behöver omedelbar uppmärksamhet.
  • Skala och effektivitet:

    • Parallell bearbetning: Använd molnagenter för att bearbeta flera lagringsplatser samtidigt.
    • Automatiserade arbetsflöden: Integrera med CI/CD-pipelines för schemalagd utvärdering.
    • Tidsbesparingar: Minska den totala utvärderingstiden från veckor till timmar.

Förutsättningar

  • Modernisera CLI.
  • Åtkomst till alla lagringsplatser som du vill utvärdera.
  • GitHub autentisering har konfigurerats (gh auth login).

Konfigurera lagringsplatser

Moderniseringsagenten har stöd för flera sätt att ange de lagringsplatser som du vill utvärdera:

  • Aktuell mapp: Utvärdera projektet i den aktuella arbetskatalogen.
  • Manuell inmatning: Ange lokala katalogsökvägar eller git-fjärr-URL:er direkt.
  • Databaskonfigurationsfil: Använd en JSON-konfigurationsfil som visar alla lagringsplatser.

Databaskonfigurationsfil

För batchåtgärder över många lagringsplatser skapar du en JSON-konfigurationsfil för att visa en lista över alla lagringsplatser. Du kan till exempel skapa det .github/modernize/repos.json i din arbetskatalog eller ange en anpassad sökväg.

Kontrollera att du har rätt behörigheter för lagringsplatserna eller förgrena dem.

Enkelt format (matris med lagringsplatser):

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

Fullständigt format (med gren- och lokala sökvägar):

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

Varje lagringsplatspost stöder följande fält:

Fält Beskrivning Obligatoriskt
name Ett eget namn för lagringsplatsen (används i rapporter och instrumentpaneler). Ja
url Git-klon-URL i HTTPS- eller SSH-format. En av url eller path
path Absolut lokal katalogsökväg. En av url eller path
branch Förgrena för att checka ut efter kloning. No
description Beskrivning som kan läsas av människor. No

Fullständigt format med appgruppering (valfritt, för organiserad rapportering):

Du kan lägga till ett apps[] avsnitt för att gruppera lagringsplatser i logiska program. När appar definieras ordnar den aggregerade rapporten resultat efter program och stöder rapportdistribution till externa mål.

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

Varje app-inlägg stödjer:

Fält Beskrivning Obligatoriskt
identifier Unikt visningsnamn för programmet. Ja
description Beskrivning som kan läsas av människor. No
repos Lista över lagringsplatsnamn som tillhör den här appen. Ja
output Var appens utvärderingsrapport ska distribueras efter generering. No

Fältet output stöder följande distributionstyper:

Type Beskrivning Obligatoriska fält
local Kopiera rapporter till en lokal katalog. path
git Skicka rapporter till en Git-lagringsplats. URL-formatet är https://github.com/org/repo.git#branch:path. url

Tips/Råd

Du kan inkludera lagringsplatser från olika organisationer och använda olika autentiseringsmetoder så länge du har åtkomst.

Moderniseringsagenten identifierar automatiskt repos.json-filen vid .github/modernize/repos.json när du väljer Från en konfigfil i interaktivt läge. Du kan också ange en anpassad sökväg.

Köra batchutvärdering

Två körningslägen är tillgängliga:

  • Lokal körning: Moderniseringsagenten bearbetar lagringsplatser en efter en på den lokala datorn. Det här läget fungerar bäst för en mindre uppsättning program eller för inledande testning. Stöder både Git-URL:er och lokala sökvägslagringsplatser.
  • Cloud-agentdelegering: Moderniseringsagenten skickar uppgifter till GitHub Copilot molnagenter för parallell bearbetning i molnet. Det här läget är snabbare för flerepo-scenarier.

Viktigt!

Molnagentdelegering kräver att lagringsplatser har url:er för GitHub (github.com). Lokala sökvägslagringsplatser och icke-GitHub providers (GitLab, Azure DevOps) stöds inte för molndelegering. Använd lokal exekvering för dessa lagringsplatser.

Tips/Råd

Genom att använda molnagentdelegering aktiverar du parallell körning över alla lagringsplatser. Den här metoden minskar avsevärt den totala utvärderingstiden för stora portföljer.

Interaktivt läge (utvärdera lokalt)

  1. Kör moderniseringsagenten:

    modernize
    
  2. Välj Utvärdera på huvudmenyn.

    Skärmbild av Modernisera CLI som visar huvudmenyn med alternativet Utvärdera i terminalen.

  3. Välj hur du vill ange dina mållagringsplatser. Välj Från en konfigurationsfil för att använda en repos.json fil.

    Skärmbild av Modernisera CLI som visar val av källtyp i terminalen.

    Tips/Råd

    Du kan också välja Manuella indata för att ange lokala sökvägar eller fjärranslutna Git-URL:er direkt, eller Aktuell mapp för att utvärdera projektet i den aktuella katalogen.

  4. repos.json Om filen identifieras på standardplatsen fyller agenten automatiskt i den. Annars anger du sökvägen till konfigurationsfilen och trycker på Retur.

  5. Alla lagringsplatser är markerade som standard. Avmarkera alla lagringsplatser som du vill hoppa över och tryck sedan på Retur för att bekräfta ditt val.

    • Använd piltangenterna för att navigera och tryck på Blanksteg för att växla enskilda lagringsutrymmen.

    Skärmbild av Modernisera CLI som visar lagringsplatsens lista i terminalen.

  6. Välj de utvärderingsdomäner som ska analyseras. Upgrade och Cloud Readiness köras på Java- och .NET projekt på lagringsplatsen. Security är avmarkerat som standard och körs endast på Java projekt. Välj det för att söka efter CVE-sårbarheter och ISO 5055-guidade CWE-problem.

    Skärmbild av Modernisera CLI som visar val av utvärderingsdomän i terminalen.

  7. Granska och konfigurera utvärderingsalternativen. På konfigurationssidan visas alternativ grupperade efter språk och domän:

    • Allmän/analystäckning:
      • Endast problem (standard): Identifierar moderniserings- och säkerhetsproblem i källkoden. Snabbaste alternativet.
      • Fullständig analys: Identifierar problem och genererar dessutom codebase-insikter i sex aspekter av ditt program – Arkitektur, API Contracts, Configuration, Business Workflows, Dependencies och Data Model. Det tar längre tid att köra än endast problemanalys.
    • Java/UPGRADE: Target Runtime (OpenJDK 11, 17, 21 eller 25).
    • Java / CLOUD READINESS: Target Compute Services, Target Operating System och Containerisering.
    • Java/SECURITY: Minsta allvarlighetsgrad för CVE (low, medium, high, critical; standard high). Lägre allvarlighetsgradsvärden innehåller fler resultat. (Säkerhetsdomänen är endast Java i dag.)
    • .NET/UPGRADE: Target Framework (.NET 8, 9 eller 10).
    • .NET/CLOUD READINESS: Target Compute Services.

    Använd piltangenterna för att navigera, tryck på Retur för att ändra ett värde eller välj Fortsätt för att fortsätta med de aktuella inställningarna.

    Skärmbild av Modernisera CLI som visar sidan för utvärderingskonfiguration i terminalen.

    Tips/Råd

    De rekommenderade standardvärdena fungerar för de flesta scenarier. Du behöver bara ändra de här inställningarna om du har specifika krav, till exempel att rikta in dig på en viss JDK-version, en specifik Azure beräkningstjänst eller ett annat tröskelvärde för CVE-allvarlighetsgrad.

  8. Välj körningsläge. Välj Utvärdera lokalt.

    Skärmbild av Modernisera CLI som visar menyn för utvärderingsläge i terminalen.

  9. Ange utdatasökvägen för utvärderingsresultat eller tryck på Retur för att acceptera standardvärdet.

  10. Agenten utför automatiskt följande:

    • Klonar fjärranslutna lagringsplatser (lokala sökvägslagringsplatser används direkt).

    • Kör utvärdering på varje lagringsplats en i taget.

    • Genererar enskilda utvärderingsrapporter.

      Skärmbild av Modernisera CLI som visar utdata från enskilda utvärderingsrapportgenereringar i terminalen.

    • Skapar en aggregerad rapport.

      Skärmbild av Modernisera CLI som visar utdata från den aggregerade rapportgenereringen i terminalen.

  11. När utvärderingen är klar öppnar agenten automatiskt den aggregerade rapporten.

    Skärmbild av Modernisera CLI som visar innehållet i den aggregerade rapporten.

Interaktivt läge (delegera till molnagenter)

Konfigurera först molnagenter på varje programlagringsplats. För att konfigurera molnagenter gör du en fork av exempelrepositorierna.

Konfiguration för .NET program

Konfigurera för att köras på Windows för .NET Framework-program

Som standard körs Copilot-molnagenten i en Ubuntu Linux-miljö. För .NET Framework-program behöver du en Windows miljö. Om du vill aktivera den konfigurerar du .github/workflows/copilot-setup-steps.yaml i grenen main av programlagringsplatsen enligt följande exempel:

# 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

Läs mer från: Anpassa Copilot utvecklingsmiljö med Copilot installationssteg

Inaktivera brandvägg

Inaktivera Copilot molnagentens integrerade brandvägg i lagringsplatsens inställningar enligt följande bild:

Skärmbild av GitHub som visar lagringsplatsens inställningar med inställningen Aktivera brandvägg inställd på Off.

MCP-server

Konfigurera GitHub Copilot Modernization MCP Server i avsnittet Cloud agent i inställningarna för lagringsplatsen, så som visas i följande exempel:

{
  "mcpServers": {
   "AppModDotNetUpgrade": {
        "type": "local",
        "command": "dotnet",
        "args": [
          "dnx",
          "Microsoft.GitHubCopilot.Modernization.Mcp",
          "--prerelease",
          "--yes",
          "--source",
          "https://api.nuget.org/v3/index.json"
        ],
        "env": {
          "APPMOD_CALLER_TYPE": "modernize-cli"
        },
        "tools": ["*"]
    }
  }
}

Konfiguration för Java program

Konfigurera GitHub Copilot Modernization MCP-servern i avsnittet Cloud agent i inställningarna för lagringsplatsen, så som visas i följande exempel:

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

Skärmbild av GitHub som visar molnagentinställningarna för lagringsplatsen med avsnittet MCP-konfiguration markerat.

Instruktioner

Det interaktiva flödet för molndelegering är identiskt med Utvärdera lokalt via stegen källa, lagringsplats, domän och konfiguration. Den enda skillnaden är valet av körningsläge och vad som händer efteråt.

  1. Kör moderniseringsagenten:

    modernize
    
  2. Välj Utvärdera på huvudmenyn, välj din källa (konfigurationsfil, manuell indata eller aktuell mapp), välj lagringsplatser, välj dina utvärderingsdomäner och granska konfigurationen. De här stegen fungerar exakt enligt beskrivningen i interaktivt läge (utvärdera lokalt).

  3. Välj körningsläge. Välj Delegera till molnagenter.

    Skärmbild av Modernisera CLI som visar utvärderingsmenyn med alternativet Delegera till molnagenter valt.

  4. Ange utdatasökvägen för utvärderingsresultat eller tryck på Retur för att acceptera standardvärdet.

  5. Agenten delegerar automatiskt utvärderingsuppgifter för varje lagringsplats till molnagenter och kör dem parallellt i molnet.

    Skärmbild av Modernisera CLI som visar resultatet av förloppet för delegering av utvärdering till molnagenter i terminalen.

    Agenten hämtar utvärderingsresultaten per app tillbaka till lokalt och genererar den aggregerade rapporten lokalt.

    Skärmbild av Modernisera CLI som visar aggregeringsutvärderingsrapporter i terminalen.

  6. När utvärderingen är klar öppnar agenten automatiskt den aggregerade rapporten.

Icke-interaktivt läge (CLI)

Du kan också använda icke-interaktivt läge genom att ange kommandoargument direkt. Använd kommandot modernize assess:

Utvärdera lokalt med hjälp av en databaskonfigurationsfil:

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

Utvärdera flera lagringsplatser genom att ange källor direkt:

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

Utvärdera genom att delegera till molnagenter:

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

Mer information finns i utvärdera – CLI-kommandon.

Azure Migrate-integrering

Du kan köra batchutvärdering direkt från ditt Azure Migrate projekt och få de resulterande rapporterna att flöda tillbaka till Azure Migrate automatiskt.

Flödet från slutpunkt till slutpunkt:

  1. Ladda ned ett startpaket repos.json från Azure Migrate. Azure Migrate genererar en JSON-fil som är begränsad till de program som du har valt för moderniseringsutvärdering. Filen innehåller redan posterna apps[] och blocket output som pekar tillbaka på ditt Azure Migrate projekt.

  2. Fyll i url:er för lagringsplats. Redigera varje repos[] post i den nedladdade filen för att lägga till GitHub lagringsplats-URL:en för programmet. Behåll blocken apps[] och output så som Azure Migrate genererade dem – dessa block styr uppladdningen.

  3. Kör grupputvärdering. Kör utvärderingen lokalt eller genom att delegera till molnagenter enligt föregående steg. Båda körningslägena följer utdatakonfigurationen för Azure Migrate.

  4. Rapporter laddas upp automatiskt. När utvärderingen är klar laddar moderniseringsagenten upp varje programs rapport tillbaka till ditt Azure Migrate projekt. Ingen extra CLI-flagga krävs – output.type inställningen i repos.json filen styr uppladdningen.

Förstå den aggregerade rapporten

Den aggregerade rapporten ger en omfattande vy över utvärderade program på följande sätt:

Dashboard

  • Ögonblicksbild av portföljhälsa: totalt antal appar, hur många som behöver uppgraderingar och antal aggregerade blockeringar och problem.
  • Teknikdistribution: vilka ramverk som används och hur många appar som delar dem.
  • Insatsfördelning: om migreringen i sin helhet är ett litet eller stort åtagande.

Recommendations

  • Azure Services: mappar aktuella beroenden till rekommenderade Azure motsvarigheter. Delade beroenden mellan appar bestäms en gång, så du undviker omarbete per app.
  • Target Platform: vägleder valet av värdplattform, till exempel Azure Container Apps jämfört med AKS, och lyfter fram konsolideringsmöjligheter.
  • Uppgraderingssökväg: identifierar vilka appar som behöver ramverksuppgraderingar som en förutsättning, vilket skiljer uppgraderingsarbetet från migreringsarbetet.
  • Cost Estimate: beräknar den Azure kostnaden för att köra varje program på det rekommenderade målet, så att du kan prioritera utgifter.
  • Migreringsstrategier: rekommenderar en migreringsstrategi för varje applikation – till exempel Replatform för flyttar av typen lift-and-reshape eller Rearchitect för mer omfattande refaktorisering – så att varje app får en strategi som är anpassad efter dess beredskap.
  • Migreringsvågor: delar in appar i faser utifrån mognad och risk (till exempel snabba vinster i våg 1, våg 2: kärnmoln, våg 3: långsiktiga satsningar). Den här metoden möjliggör tidiga vinster medan svårare appar förbereds parallellt.

Matris för programutvärdering

  • Snabböversikt för varje program avseende ramverk, målplattform, uppgraderingsrekommendation, problemuppdelning (obligatorisk, potentiell, valfri), ansträngningsbedömning och mer.
  • Länkar till enskilda apprapporter för ökad detaljnivå när det behövs.

Felsökning av batchutvärdering

Vanliga problem

Fel vid åtkomst till lagringsplats:

  • Verifiera GitHub autentisering med hjälp av gh auth status.
  • Kontrollera att du har åtkomst till alla lagringsplatser som anges i repos.json.

Klonfel:

  • Kontrollera att url:erna för lagringsplatsen är repos.json korrekta och tillgängliga.
  • Kontrollera att du har rätt åtkomstbehörigheter för alla lagringsplatser.
  • Kontrollera nätverksanslutningen och VPN-inställningarna.

Utvärderingsfel:

  • Kontrollera om lagringsplatsen innehåller giltiga Java-, .NET- eller JavaScript-/TypeScript-projekt.
  • Kontrollera att det finns byggfiler, till exempel pom.xml, build.gradle, *.csproj, *.sln, *.slnxeller package.json.
  • Granska felmeddelanden i konsolens utdata. Varningar som inte är dödliga (till exempel saknade byggfiler i en undermodul) visas nu direkt i CLI-utdata – granska dem innan du behandlar rapporten som slutgiltig.

Problem med molnagentdelegering:

  • Molnagentdelegering accepterar endast https://github.com/... url:er för lagringsplatser. Lokala sökvägar och leverantörer som inte är GitHub (GitLab, Azure DevOps) avvisas redan från början med ett beskrivande felmeddelande. Använd lokal exekvering för dessa lagringsplatser.
  • Kontrollera att du har rätt behörigheter för att skapa GitHub Actions arbetsflöden.
  • Kontrollera GitHub Actions behörigheter och kvotgränser för din organisation.
  • För .NET Framework-appar kontrollerar du att Windows runner-konfigurationen är korrekt inställd.
  • Kontrollera mcp-serverkonfigurationen.

Nästa steg

När du har slutfört batchutvärderingen kan du:

Fortsätt moderniseringsarbetsflödet:

Läs mer:

Lämna feedback

Dina indata är viktiga! Om du har feedback om batchutvärdering eller moderniseringsagenten skapa ett problem på github-copilot-appmod-lagringsplatsen eller använd GitHub Copilot formuläret för moderniseringsfeedback.