Dávkové hodnocení pomocí agenta modernizace GitHub Copilot

Dávkové posouzení umožňuje analyzovat portfolio aplikací Java, .NET a JavaScript/TypeScript v jednom spuštění. Získáte komplexní přehled o modernizaci prostředí napříč vašimi aplikacemi. Tento článek vás provede procesem efektivního vyhodnocení více úložišť. Tento proces podporuje úložiště s jedním jazykem i úložiště mono-repos, která obsahují kombinaci projektů Java, .NET a JavaScript/TypeScript.

Každá aplikace se analyzuje ve dvou vzájemně se doplňujících směrech. Kontrola problémů najde problémy, které je potřeba opravit. CodeBase Insights dokumentuje, jak je aplikace sestavená, abyste si ji mohli naplánovat.

Kontrola problémů

Kontrola problémů detekuje modernizaci a problémy se zabezpečením napříč třemi doménami. Pokrytí jazyka se liší podle domény:

  • Upgrade – analýza verzí modulu runtime a architektury Zahrnuje Java a .NET.
  • Cloud Readiness – Azure problémy s přizpůsobením cílové platformy a migrací. Zahrnuje Java a .NET.
  • Zabezpečení — skenování CVE napříč přímými i nepřímými závislostmi a bezpečnostní problémy CWE podle ISO 5055. V tuto chvíli pouze Java; podpora pro .NET a JavaScript/TypeScript je plánována.

Přehled kódové základny

CodeBase Insights dokumentuje, jak se každá aplikace sestavuje. Vytvářejí se pro projekty Java, .NET a JavaScript/TypeScript. Zobrazí se, když v nastavení Pokrytí analýzy vyberete Úplnou analýzu .

  • Architektura – diagram architektury vysoké úrovně s vrstvami, hranicemi modulů, topologií modulu a vstupními body
  • Kontrakty rozhraní API – REST, gRPC, fronta zpráv a webhook zpřístupňují nebo spotřebovávají aplikace. Velikost poloměru výbuchu integrace před migrací
  • Konfigurace – konfigurační soubory, proměnné prostředí, příznaky funkcí, připojovací řetězce a tajné kódy. Řídí migraci tajných kódů a konfigurace do Azure Key Vault a Azure App Configuration.
  • Obchodní pracovní postupy – kompletní funkční toky rekonstruované z kódu (například objednávky → rezerva → placení →). Ukotvuje rozsah regresního testování a komunikaci se zainteresovanými stranami.
  • Závislosti – přímé a tranzitivní knihovny, sady SDK a ovladače s připnutými verzemi. Poskytuje mapování služeb Azure a zobrazuje připnutí verzí po konci životnosti (EOL) nebo beta verzí.
  • Datový model – databáze, schémata, klíčové entity a vztahy z mapování ORM a DDL. Řídí plánování migrace datové vrstvy.

Přehledy

Dávkové hodnocení je zvláště cenné pro plánování migrace, protože umožňuje efektivně posoudit připravenost a požadavky různých aplikací najednou. Pomocí dávkového hodnocení můžete současně vyhodnotit různá úložiště a získat podrobné sestavy hodnocení pro každou aplikaci. Vytváří dva druhy sestav k podpoře plánování migrace:

  • Přehled podle úložiště: Poskytuje podrobný přehled o dvou identifikovaných aspektech na úrovni jednotlivých úložišť.
  • Agregovaná sestava: Představuje celkový pohled na všechny hodnocené aplikace, nabízí souhrnné přehledy, doporučení týkající se služeb Azure, cílových platforem, cest upgradu, strategií migrace a vln migrace. Agregovaná sestava navíc obsahuje klávesové zkratky pro snadný přístup ke každé sestavě úložiště.

Dávkové hodnocení poskytuje následující výhody:

  • Viditelnost mezi aplikacemi:

    • Agregované sestavy: Získejte celkový přehled ve všech aplikacích.
    • Analýza mezi úložišti: Identifikace běžných vzorů a závislostí napříč aplikacemi
    • Přehledy stanovení priorit: Zjistěte, které aplikace vyžadují okamžitou pozornost.
  • Efektivita a škálování:

    • Paralelní zpracování: Použití cloudových agentů ke zpracování více úložišť současně.
    • Automatizované pracovní postupy: Integrace s CI/CD pipelines pro plánované hodnocení.
    • Úspora času: Zkracujte celkovou dobu hodnocení od týdnů do hodin.

Předpoklady

Konfigurace úložišť

Agent modernizace podporuje několik způsobů, jak určit úložiště, která chcete posoudit:

  • Aktuální složka: Vyhodnoťte projekt v aktuálním pracovním adresáři.
  • Ruční vstup: Zadejte cesty k místnímu adresáři nebo vzdálené adresy URL Gitu přímo.
  • Konfigurační soubor úložiště: Použijte konfigurační soubor JSON, který obsahuje seznam všech úložišť.

Konfigurační soubor úložiště

Pro dávkové operace v mnoha úložištích vytvořte konfigurační soubor JSON pro výpis všech úložišť. Můžete ho například vytvořit v .github/modernize/repos.json pracovním adresáři nebo zadat vlastní cestu.

Ujistěte se, že máte správná oprávnění pro úložiště, nebo je rozvětvěte.

Jednoduchý formát (pole úložišť):

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

Úplný formát (s větvemi a místními cestami):

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

Každá položka úložiště podporuje následující pole:

Pole Description Povinné
name Přátelský název úložiště (používaný v sestavách a řídicích panelech) Ano
url Adresa URL pro klonování v Gitu ve formátu HTTPS nebo SSH Jedna z url nebo path
path Absolutní cesta k místnímu adresáři Jedna z url nebo path
branch Větev, na kterou se přepnout po klonování. Ne
description Popis čitelný pro člověka. Ne

Úplný formát s uskupením aplikací (volitelně, pro organizované reportování):

Do logických aplikací můžete přidat apps[] oddíl pro seskupení úložišť. Když jsou aplikace definovány, souhrnná zpráva uspořádá výsledky podle aplikace a podporuje rozšiřování zpráv do externích cí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"
      }
    }
  ]
}

Každá položka aplikace podporuje:

Pole Description Povinné
identifier Jedinečný zobrazovaný název aplikace Ano
description Popis čitelný pro člověka. Ne
repos Seznam názvů úložiště, které patří do této aplikace Ano
output Kam distribuovat zprávu o hodnocení této aplikace po jejím vygenerování Ne

Pole output podporuje následující typy distribuce:

Typ Description Povinná pole
local Zkopírujte sestavy do místního adresáře. path
git Nasdílení sestav do úložiště Git Formát adresy URL je https://github.com/org/repo.git#branch:path. url

Návod

Můžete zahrnout úložiště z různých organizací a používat různé metody ověřování, pokud máte přístup.

Agent modernizace automaticky rozpozná soubor repos.json na .github/modernize/repos.json, když vyberete možnost Z konfiguračního souboru v interaktivním režimu. Můžete také zadat vlastní cestu.

Spuštění dávkového hodnocení

K dispozici jsou dva režimy spuštění:

  • Místní spuštění: Agent modernizace zpracovává úložiště po druhém na místním počítači. Tento režim je nejvhodnější pro menší sadu aplikací nebo pro počáteční testování. Podporuje jak adresu URL Gitu, tak úložiště místních cest.
  • Delegování cloudovým agentům: Modernizační agent odesílá úlohy cloudovým agentům GitHub Copilot ke paralelnímu zpracování v cloudu. Tento režim je rychlejší pro scénáře s více úložišti.

Důležité

Delegování cloudového agenta vyžaduje, aby repozitáře měly adresy URL repozitářů GitHub (github.com). Úložiště místních cest a poskytovatelé jiných než GitHub (GitLab, Azure DevOps) nejsou pro delegování cloudu podporované. Pro tato úložiště použijte lokální spuštění.

Návod

Pomocí delegování cloudového agenta povolíte paralelní spouštění napříč všemi úložišti. Tento přístup výrazně zkracuje celkovou dobu posouzení velkých portfolií.

Interaktivní režim (posouzení místně)

  1. Spusťte agenta modernizace:

    modernize
    
  2. V hlavní nabídce vyberte Vyhodnotit .

    Snímek obrazovky Modernize CLI, který zobrazuje hlavní nabídku s možností Posouzení v terminálu.

  3. Zvolte, jak zadat cílová úložiště. Vyberte Z konfiguračního souboru pro použití souboru repos.json.

    Snímek obrazovky s modernizací rozhraní příkazového řádku, který zobrazuje výběr typu zdroje v terminálu

    Návod

    Můžete také vybrat ruční vstup a zadat místní cesty nebo vzdálené adresy URL Gitu přímo nebo aktuální složku a posoudit tak projekt v aktuálním adresáři.

  4. repos.json Pokud je soubor zjištěn ve výchozím umístění, agent ho automaticky vyplní. V opačném případě zadejte cestu ke konfiguračnímu souboru a stiskněte Enter.

  5. Ve výchozím nastavení jsou vybraná všechna úložiště. Zrušte výběr všech úložišť, která chcete přeskočit, a stisknutím klávesy Enter potvrďte výběr.

    • Pomocí kláves se šipkami můžete procházet a stisknutím mezerník přepínat jednotlivá úložiště.

    Snímek obrazovky Modernize CLI, která zobrazuje seznam úložišť v terminálu.

  6. Vyberte domény posouzení, které chcete analyzovat. Upgrade a Cloud Readiness běží na projektech Java a .NET v úložišti. Security není ve výchozím nastavení zaškrtnutá a funguje pouze u projektů v Javě; zaškrtněte ji, chcete-li provést kontrolu zranitelností CVE a problémů CWE podle normy ISO 5055.

    Snímek obrazovky rozhraní příkazového řádku Modernize CLI, který zobrazuje výběr domény posouzení v terminálu.

  7. Zkontrolujte a nakonfigurujte možnosti posouzení. Na stránce konfigurace se zobrazují možnosti seskupené podle jazyka a domény:

    • Obecné pokrytí / analýza:
      • Pouze problém (výchozí): Detekuje problémy s modernizací a zabezpečením ve zdrojovém kódu. Nejrychlejší možnost.
      • Úplná analýza: Detekuje problémy a navíc generuje přehledy o základu kódu napříč šesti aspekty vaší aplikace – architektura, kontrakty rozhraní API, konfigurace, obchodní pracovní postupy, závislosti a datový model. Spuštění trvá déle než analýza pouze problémů.
    • Java / UPGRADE: Cílové běhové prostředí (OpenJDK 11, 17, 21 nebo 25).
    • Java / CLOUD READINESS: Cílové výpočetní služby, cílový operační systém a kontejnerizace.
    • Java / SECURITY: Minimální závažnost CVE (low, medium, high, critical; výchozí high). Nižší hodnoty závažnosti zahrnují více zjištění. (Bezpečnostní doména je dnes k dispozici pouze pro Javu.)
    • .NET / UPGRADE: Cílová architektura (.NET 8, 9 nebo 10).
    • .NET / CLOUD READINESS: Cílové výpočetní služby.

    Pomocí kláves se šipkami přejděte, stisknutím klávesy Enter změňte hodnotu nebo pokračujte v aktuálním nastavení výběrem možnosti Pokračovat .

    Snímek obrazovky nástroje Modernize CLI, která zobrazuje stránku konfigurace posouzení v terminálu.

    Návod

    Doporučené výchozí hodnoty fungují pro většinu scénářů. Tato nastavení je potřeba změnit jenom v případě, že máte specifické požadavky, například cílení na konkrétní verzi sady JDK, konkrétní Azure výpočetní službu nebo jinou prahovou hodnotu závažnosti CVE.

  8. Zvolte režim provádění. Vyberte Posoudit místně.

    Snímek obrazovky Modernize CLI, který zobrazuje nabídku režimu posouzení v terminálu.

  9. Zadejte výstupní cestu pro výsledky posouzení nebo stisknutím klávesy Enter přijměte výchozí hodnotu.

  10. Agent automaticky:

    • Klonuje vzdálená úložiště (místní cesty k úložištím se používají přímo).

    • Spustí posouzení na každém úložišti postupně.

    • Generuje individuální zprávy z hodnocení.

      Snímek obrazovky Modernize CLI zobrazující výstup generování zprávy jednotlivého hodnocení v terminálu.

    • Vytvoří agregovanou sestavu.

      Snímek obrazovky Modernize CLI, který zobrazuje výstup agregovaného generování sestavy v terminálu.

  11. Po dokončení posouzení agent automaticky otevře agregovanou sestavu.

    Snímek obrazovky Modernize CLI, který zobrazuje obsah agregované sestavy.

Interaktivní režim (delegování na cloudové agenty)

Nejprve nakonfigurujte cloudové agenty v každém úložišti aplikací. Chcete-li nakonfigurovat cloudové agenty, vytvořte fork ukázkových úložišť.

Konfigurace pro aplikace .NET

Konfigurace spuštění na Windows pro aplikace .NET Framework

Ve výchozím nastavení běží Copilot cloudový agent v prostředí Ubuntu Linux. Pro aplikace .NET Framework potřebujete Windows prostředí. Pokud ji chcete povolit, nakonfigurujte .github/workflows/copilot-setup-steps.yaml ji ve main větvi úložiště vaší aplikace, jak je znázorněno v následujícím příkladu:

# 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

Další informace najdete v tématu: Přiložit vývojové prostředí Copilot pomocí kroků nastavení Copilot

Zakázání brány firewall

V nastavení vašeho úložiště zakažte integrovaný firewall cloudového agenta Copilotu, jak je znázorněno na následujícím obrázku:

Screenshot z GitHubu, který zobrazuje nastavení úložiště s povoleným nastavením brány firewall nastaveným na Vypnuto.

MCP Server

Nakonfigurujte GitHub Copilot Modernization MCP Server v části Cloud agent v nastavení vašeho úložiště, jak je znázorněno v následujícím příkladu:

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

Konfigurace pro aplikace Java

Nakonfigurujte GitHub Copilot Modernization MCP Server v části Cloud agent v nastavení svého úložiště, jak je znázorněno v následujícím příkladu:

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

Snímek obrazovky z GitHubu, který zobrazuje nastavení cloudového agenta repozitáře se zvýrazněnou sekcí konfigurace MCP.

Kroky

Interaktivní tok pro delegování do cloudu je stejný jako u Posoudit místně v krocích zdroje, úložiště, domény a konfigurace. Jediným rozdílem je volba režimu spuštění a to, co se stane později.

  1. Spusťte agenta modernizace:

    modernize
    
  2. V hlavní nabídce vyberte Posouzení , zvolte zdroj (konfigurační soubor, ruční vstup nebo aktuální složku), vyberte úložiště, vyberte domény posouzení a zkontrolujte konfiguraci. Tyto kroky fungují přesně tak, jak je popsáno v interaktivním režimu (posouzení místně).

  3. Zvolte režim provádění. Vyberte Delegovat na cloudové agenty.

    Snímek obrazovky nástroje Modernize CLI zobrazující nabídku Assess s vybranou možností Předat cloudovým agentům.

  4. Zadejte výstupní cestu pro výsledky posouzení nebo stisknutím klávesy Enter přijměte výchozí hodnotu.

  5. Agent automaticky deleguje úlohy hodnocení pro každé úložiště na cloudové agenty a provádí je paralelně v cloudu.

    Snímek obrazovky s modernizací rozhraní příkazového řádku, který ukazuje výstup postupu delegování hodnocení na cloudové agenty v terminálu

    Agent stáhne výsledky posouzení jednotlivých aplikací zpět do místního prostředí a místně vygeneruje agregovanou sestavu.

    Snímek obrazovky Modernize CLI, který zobrazuje agregační hodnotící sestavy v terminálu.

  6. Po dokončení posouzení agent automaticky otevře agregovanou sestavu.

Neinteraktivní režim (CLI)

Neinteraktivní režim můžete použít také tak, že zadáte přímo argumenty příkazu. Použijte příkaz modernize assess:

Místní posouzení pomocí konfiguračního souboru úložiště:

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

Vyhodnoťte více úložišť tak, že přímo zadáte zdroje:

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

Posuďte pomocí cloudových agentů:

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

Další informace najdete v tématu vyhodnocení – příkazy rozhraní příkazového řádku.

Integrace služby Azure Migrate

Dávkové hodnocení můžete spustit přímo z projektu Azure Migrate a výsledné sestavy se automaticky vrátí zpět do Azure Migrate.

Tok od začátku do konce:

  1. Stáhněte si z Azure Migrate šablonu pro začátek repos.json. Azure Migrate vygeneruje soubor JSON s oborem aplikací, které jste vybrali pro posouzení modernizace. Soubor již obsahuje položky apps[] a blok output, který odkazuje zpět na projekt Azure Migrate.

  2. Vyplňte adresy URL úložiště. Upravte každou položku repos[] ve staženém souboru a přidejte adresu URL úložiště GitHub aplikace. Ponechte bloky apps[] a output tak, jak je vygenerovala služba Azure Migrate – tyto bloky řídí proces nahrávání.

  3. Spusťte dávkové hodnocení. Spusťte posouzení místně nebo delegováním na cloudové agenty podle předchozích kroků. Oba režimy provádění dodržují konfiguraci výstupu Azure Migrate.

  4. Reporty se automaticky odesílají. Po dokončení posouzení agent pro modernizaci nahraje zpět do vašeho projektu Azure Migrate zprávu pro každou aplikaci. Není vyžadován žádný další přepínač CLI – o odeslání rozhoduje nastavení output.type v souboru repos.json.

Pochopení agregované sestavy

Agregovaná sestava poskytuje komplexní přehled o hodnocených aplikacích následujícím způsobem:

Dashboard

  • Snímek stavu portfolia: celkový počet aplikací, počet potřebných upgradů a agregované blokování a počty problémů
  • Distribuce technologií: jaké architektury se používají a kolik aplikací je sdílí.
  • Distribuce úsilí: zda je celková migrace malým nebo velkým podnikem.

Doporučení

  • Azure Services: mapuje aktuální závislosti na doporučené Azure ekvivalenty. Sdílené závislosti napříč aplikacemi se rozhodnou jednou, takže se vyhnete přepracování jednotlivých aplikací.
  • Cílová platforma: usměrňuje volbu hostingu, například mezi Azure Container Apps a AKS, a odhaluje příležitosti ke konsolidaci.
  • Postup upgradu: identifikuje, které aplikace vyžadují nejprve upgrade frameworku, a odděluje práci na upgradu od migračních prací.
  • Cost Estimate: odhaduje Azure náklady na provoz jednotlivých aplikací podle doporučeného cíle, abyste mohli zohlednit výdaje na stanovení priorit.
  • Strategie migrace: Doporučuje přístup k migraci na aplikaci – například Replatform for lift-and-reshape moves nebo Rearchitect pro hlubší refaktoring – aby každá aplikace získala strategii odpovídající připravenosti.
  • Vlny migrace: rozděluje aplikace do fází podle připravenosti a rizika (například vlna 1: rychlé přínosy, vlna 2: klíčové cloudové aplikace, vlna 3: dlouhodobé investice). Tento přístup umožňuje předčasné výhry, zatímco těžší aplikace jsou připravené paralelně.

Matice posouzení aplikací

  • Rychlý přehled jednotlivých aplikací v aspektech architektury, cílové platformy, doporučení k upgradu, rozpisu problémů (povinné, potenciální, volitelné), nastavení velikosti úsilí a další.
  • Odkazy na jednotlivé sestavy aplikací pro podrobnější přístup k detailům při potřebě.

Řešení potíží s dávkovými posouzeními

Běžné problémy

Chyby přístupu k úložišti:

  • Pomocí příkazu gh auth status ověřte ověřování GitHub.
  • Ujistěte se, že máte přístup ke všem úložištím uvedeným v seznamu repos.json.

Selhání klonování:

  • Ověřte, že adresy URL úložiště v repos.json jsou správné a přístupné.
  • Ujistěte se, že máte správná přístupová oprávnění pro všechna úložiště.
  • Zkontrolujte připojení k síti a nastavení sítě VPN.

Selhání posouzení:

  • Zkontrolujte, jestli úložiště obsahuje platné Java, .NET nebo projekty JavaScript/TypeScript.
  • Ověřte, že existují soubory sestavení, například pom.xml, build.gradle, *.csproj, *.sln, *.slnxnebo package.json.
  • Zkontrolujte chybové zprávy ve výstupu konzoly. Nezávažná upozornění (například chybějící soubory sestavení v dílčím modulu) se nyní zobrazují přímo ve výstupu rozhraní příkazového řádku – předtím, než budete zprávu považovat za konečnou, je zkontrolujte.

Problémy s delegování cloudového agenta:

  • Delegování cloudového agenta podporuje pouze adresy URL úložišť https://github.com/.... Místní cesty a jiní poskytovatelé než GitHub (GitLab, Azure DevOps) jsou rovnou odmítnuty s jasnou chybovou zprávou. Pro tato úložiště použijte lokální spuštění.
  • Ujistěte se, že máte správná oprávnění k vytváření pracovních postupů GitHub Actions.
  • Zkontrolujte oprávnění GitHub Actions a limity kvót pro vaši organizaci.
  • U aplikací .NET Framework se ujistěte, že je správně nastavená konfigurace spouštěče Windows.
  • Zkontrolujte konfiguraci serveru MCP.

Další kroky

Po dokončení dávkového hodnocení můžete:

Pokračujte v postupu modernizace:

Další informace:

Poskytnout zpětnou vazbu

Váš vstup je důležitý! Pokud máte zpětnou vazbu k dávkovému posouzení nebo agentovi modernizace, vytvořte problém v úložišti github-copilot-appmod nebo použijte formulář pro GitHub Copilot formulář pro modernizaci.