Penilaian massal dengan agen modernisasi GitHub Copilot

Penilaian batch memungkinkan Anda menganalisis portofolio aplikasi Java, .NET, dan JavaScript/TypeScript dalam satu proses. Anda mendapatkan tampilan komprehensif tentang lanskap modernisasi di seluruh aplikasi Anda. Artikel ini memandu Anda melalui proses menilai beberapa repositori secara efisien. Proses ini mendukung repositori bahasa tunggal dan mono-repos yang berisi campuran proyek Java, .NET, dan JavaScript/TypeScript.

Setiap aplikasi dianalisis melalui dua jalur yang saling melengkapi. Pemindaian isu menemukan masalah yang perlu diperbaiki. Wawasan basis kode mendokumentasikan bagaimana aplikasi dibuat agar Anda dapat menyusun rencana berdasarkan hal tersebut.

Pemindaian masalah

Pemindaian masalah mendeteksi modernisasi dan masalah keamanan di tiga domain. Cakupan bahasa berbeda menurut domain:

  • Peningkatan — analisis versi runtime dan kerangka kerja. Mencakup Java dan .NET.
  • Kesiapan Cloud — kecocokan platform target Azure dan masalah migrasi. Mencakup Java dan .NET.
  • Keamanan — Pemindaian CVE pada dependensi langsung dan transitif, serta masalah keamanan CWE berdasarkan panduan ISO 5055. Java saja saat ini; .NET dan dukungan JavaScript/TypeScript ada di peta strategi.

Wawasan basis kode

Wawasan basis kode mendokumen bagaimana setiap aplikasi dibangun. Mereka diproduksi untuk proyek Java, .NET, dan JavaScript/TypeScript. Mereka muncul saat Anda memilih Analisis penuh dalam pengaturan Cakupan Analisis.

  • Arsitektur — diagram arsitektur tingkat tinggi dengan lapisan, batas modul, topologi runtime, dan titik masuk.
  • Kontrak API — REST, gRPC, antrean pesan, dan webhook yang diekspos atau dikonsumsi aplikasi. Mengukur radius ledakan integrasi sebelum migrasi.
  • Konfigurasi — file konfigurasi, variabel lingkungan, bendera fitur, string koneksi, dan rahasia. Mendorong migrasi rahasia dan konfigurasi ke Azure Key Vault dan Azure App Configuration.
  • Alur Kerja Bisnis — alur fungsional end-to-end yang direkonstruksi dari kode (misalnya, memesan → cadangan → membayar pemenuhan →). Cakupan regresi jangkar dan komunikasi pemangku kepentingan.
  • Dependensi — pustaka, SDK, dan driver langsung maupun transitif dengan versi yang ditetapkan. Menyuplai pemetaan layanan Azure dan menampilkan pinning EOL atau beta.
  • Model Data — database, skema, entitas utama, dan hubungan dari pemetaan ORM dan DDL. Mendorong perencanaan migrasi lapisan data.

Reports

Penilaian batch sangat berharga untuk perencanaan migrasi karena memungkinkan Anda menilai kesiapan dan persyaratan berbagai aplikasi secara efisien sekaligus. Dengan menggunakan penilaian batch, Anda dapat mengevaluasi repositori yang berbeda secara bersamaan dan mendapatkan laporan penilaian terperinci untuk setiap aplikasi. Ini menghasilkan dua jenis laporan untuk mendukung perencanaan migrasi Anda:

  • Laporan per repositori: Memberikan wawasan terperinci tentang dua aspek yang diidentifikasi pada tingkat repositori individu.
  • laporan Aggregated: Menyajikan perspektif keseluruhan dari semua aplikasi yang dinilai, menawarkan wawasan ringkasan, rekomendasi tentang layanan Azure, platform target, jalur peningkatan, strategi migrasi, dan gelombang migrasi. Selain itu, laporan agregat menyertakan pintasan untuk akses mudah ke setiap laporan per repositori.

Penilaian batch memberikan manfaat berikut:

  • Visibilitas lintas aplikasi:

    • Laporan agregat: Dapatkan tampilan komprehensif di seluruh aplikasi.
    • Analisis lintas repositori: Mengidentifikasi pola dan dependensi umum di seluruh aplikasi.
    • Wawasan prioritas: Pahami aplikasi mana yang membutuhkan perhatian segera.
  • Skala dan efisiensi:

    • Pemrosesan paralel: Gunakan agen cloud untuk memproses beberapa repositori secara bersamaan.
    • Alur kerja otomatis: Integrasikan dengan alur CI/CD untuk penilaian terjadwal.
    • Penghematan waktu: Kurangi total waktu penilaian dari minggu ke jam.

Prasyarat

  • Modernisasi CLI.
  • Akses ke semua repositori yang ingin Anda nilai.
  • Autentikasi GitHub dikonfigurasi (gh auth login).

Konfigurasikan repositori

Agen modernisasi mendukung beberapa cara untuk menentukan repositori yang ingin Anda nilai:

  • Folder saat ini: Menilai proyek di direktori kerja Anda saat ini.
  • Input manual: Masukkan jalur direktori lokal atau URL Git jarak jauh secara langsung.
  • File konfigurasi repositori: Gunakan file konfigurasi JSON yang mencantumkan semua repositori.

File konfigurasi repositori

Untuk operasi batch di banyak repositori, buat file konfigurasi JSON untuk mencantumkan semua repositori. Misalnya, buat di .github/modernize/repos.json direktori kerja Anda, atau berikan jalur kustom.

Pastikan Anda memiliki izin yang tepat untuk repositori atau fork mereka.

Format sederhana (larik repositori):

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

Format lengkap (dengan jalur cabang dan lokal):

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

Setiap entri repositori mendukung bidang berikut:

Ladang Deskripsi Required
name Nama yang mudah diingat untuk repositori (digunakan dalam laporan dan dasbor). Yes
url URL kloning Git dalam format HTTPS atau SSH. Salah satu dari url atau path
path Jalur direktori lokal absolut. Salah satu dari url atau path
branch Cabang yang akan dipilih setelah melakukan kloning. No
description Deskripsi yang dapat dibaca manusia. No

Format lengkap dengan pengelompokan aplikasi (opsional, untuk pelaporan terorganisir):

Anda dapat menambahkan bagian apps[] untuk mengelompokkan repositori ke dalam aplikasi logis. Saat aplikasi ditentukan, laporan agregat mengatur hasil berdasarkan aplikasi dan mendukung distribusi laporan ke tujuan eksternal.

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

Setiap entri aplikasi mendukung:

Ladang Deskripsi Required
identifier Nama tampilan unik aplikasi. Yes
description Deskripsi yang dapat dibaca manusia. No
repos Daftar nama repositori milik aplikasi ini. Yes
output Tempat mendistribusikan laporan penilaian aplikasi ini setelah selesai dibuat. No

Bidang output mendukung jenis distribusi berikut:

Tipe Deskripsi Bidang yang wajib diisi
local Salin laporan ke direktori lokal. path
git Mendorong laporan ke repositori Git. Format URL adalah https://github.com/org/repo.git#branch:path. url

Petunjuk / Saran

Anda dapat menyertakan repositori dari organisasi yang berbeda dan menggunakan metode autentikasi yang berbeda selama Anda memiliki akses.

Agen modernisasi secara otomatis mendeteksi repos.json file pada .github/modernize/repos.json ketika Anda memilih Dari file konfigurasi dalam mode interaktif. Anda juga dapat menyediakan jalur kustom.

Menjalankan penilaian kelompok

Tersedia dua mode eksekusi:

  • Eksekusi lokal: Agen modernisasi memproses repositori satu demi satu di komputer lokal Anda. Mode ini berfungsi paling baik untuk serangkaian aplikasi yang lebih kecil atau untuk pengujian awal. Mendukung URL Git dan repositori jalur lokal.
  • Delegasi agen cloud: Agen modernisasi mengirimkan tugas ke agen cloud GitHub Copilot untuk pemrosesan paralel di cloud. Mode ini lebih cepat untuk skenario multi-repo.

Penting

Delegasi agen cloud mengharuskan repositori memiliki URL repositori GitHub (github.com). Repositori jalur lokal dan penyedia non-GitHub (GitLab, Azure DevOps) tidak didukung untuk delegasi cloud. Gunakan eksekusi lokal untuk repositori tersebut.

Petunjuk / Saran

Dengan menggunakan delegasi agen Cloud, Anda mengaktifkan eksekusi paralel di semua repositori. Pendekatan ini secara signifikan mengurangi total waktu penilaian untuk portofolio besar.

Mode interaktif (menilai secara lokal)

  1. Jalankan agen modernisasi:

    modernize
    
  2. Pilih Evaluasi dari menu utama.

    Cuplikan layar Modernize CLI yang memperlihatkan menu utama dengan opsi Assess di terminal.

  3. Pilih cara menentukan repositori target Anda. Pilih Dari file konfigurasi untuk menggunakan repos.json file.

    Cuplikan layar Modernisasi CLI yang memperlihatkan pilihan jenis sumber di terminal.

    Petunjuk / Saran

    Anda juga dapat memilih Input manual untuk memasukkan jalur lokal atau URL Git jarak jauh secara langsung, atau Folder saat ini untuk menilai proyek di direktori Anda saat ini.

  4. repos.json Jika file terdeteksi di lokasi default, agen secara otomatis mengisinya. Jika tidak, masukkan jalur ke file konfigurasi Anda dan tekan Enter.

  5. Semua repositori dipilih secara default. Batal pilih repositori apa pun yang ingin Anda lewati, lalu tekan Enter untuk mengonfirmasi pilihan Anda.

    • Gunakan tombol panah untuk menavigasi dan menekan Spasi untuk mengalihkan repositori individual.

    Cuplikan layar Modernisasi CLI yang memperlihatkan daftar repositori di terminal.

  6. Pilih domain penilaian untuk dianalisis. Upgrade dan Cloud Readiness berjalan pada proyek Java dan .NET di repositori. Keamanan tidak dicentang secara default dan hanya berjalan pada proyek Java; pilih untuk memindai kerentanan CVE dan masalah CWE yang dipandu ISO 5055.

    Cuplikan layar Modernisasi CLI yang menunjukkan pemilihan domain penilaian di terminal.

  7. Tinjau dan konfigurasikan opsi penilaian. Halaman konfigurasi memperlihatkan opsi yang dikelompokkan menurut bahasa dan domain:

    • Cakupan Umum / Analisis:
      • Hanya masalah (default): Mendeteksi masalah terkait modernisasi dan keamanan pada kode sumber Anda. Opsi tercepat.
      • Analisis penuh: Mendeteksi masalah dan juga menghasilkan wawasan basis kode di enam aspek aplikasi Anda — Arsitektur, Kontrak API, Konfigurasi, Alur Kerja Bisnis, Dependensi, dan Model Data. Memerlukan waktu lebih lama untuk dijalankan daripada analisis khusus masalah.
    • Java/ UPGRADE: Target Runtime (OpenJDK 11, 17, 21, atau 25).
    • Java / CLOUD READINESS: Layanan Komputasi Target, Sistem Operasi Target, dan Kontainerisasi.
    • Java / SECURITY: Tingkat keparahan CVE minimum (low, medium, high, critical; default high). Nilai tingkat keparahan yang lebih rendah mencakup lebih banyak temuan. (Domain keamanan saat ini hanya untuk Java.)
    • .NET / UPGRADE: Kerangka Kerja Target (.NET 8, 9, atau 10).
    • .NET / CLOUD READINESS: Layanan Komputasi Target.

    Gunakan tombol panah untuk menavigasi, tekan Enter untuk mengubah nilai, atau pilih Lanjutkan untuk melanjutkan pengaturan saat ini.

    Cuplikan layar Modernisasi CLI yang memperlihatkan halaman konfigurasi penilaian di terminal.

    Petunjuk / Saran

    Pengaturan default yang direkomendasikan berfungsi untuk sebagian besar skenario. Anda hanya perlu mengubah pengaturan ini jika Anda memiliki persyaratan khusus, seperti menargetkan versi JDK tertentu, layanan komputasi Azure tertentu, atau ambang batas keparahan CVE yang berbeda.

  8. Pilih mode eksekusi. Pilih Evaluasi secara lokal.

    Cuplikan layar Modernisasi CLI yang memperlihatkan menu mode penilaian di terminal.

  9. Masukkan jalur output untuk hasil penilaian atau tekan Enter untuk menerima default.

  10. Agen secara otomatis:

    • Mengkloning repositori jarak jauh (repositori jalur lokal digunakan secara langsung).

    • Menjalankan penilaian pada setiap repositori satu per satu.

    • Menghasilkan laporan penilaian individual.

      Cuplikan layar Modernisasi CLI yang menunjukkan output pembuatan laporan penilaian individual di terminal.

    • Membuat laporan agregat.

      Cuplikan layar Modernisasi CLI yang menunjukkan output pembuatan laporan agregat di terminal.

  11. Setelah penilaian selesai, agen secara otomatis membuka laporan agregat.

    Cuplikan layar Modernisasi CLI yang memperlihatkan konten laporan agregat.

Mode interaktif (mendelegasikan ke agen cloud)

Pertama, konfigurasikan agen cloud di setiap repositori aplikasi. Untuk mengonfigurasi agen cloud, buat fork dari repositori contoh.

Konfigurasi untuk aplikasi .NET

Mengonfigurasi untuk berjalan di Windows untuk aplikasi .NET Framework

Secara default, agen cloud Copilot berjalan di lingkungan Linux Ubuntu. Untuk aplikasi .NET Framework, Anda memerlukan lingkungan Windows. Untuk mengaktifkannya, konfigurasikan .github/workflows/copilot-setup-steps.yamlmain di cabang repositori aplikasi Anda seperti yang ditunjukkan dalam contoh berikut:

# 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

Pelajari selengkapnya dari: Menyesuaikan lingkungan pengembangan Copilot dengan langkah-langkah penyiapan Copilot

Nonaktifkan firewall

Nonaktifkan firewall terintegrasi agen cloud Copilot di pengaturan repositori Anda seperti yang ditunjukkan pada gambar berikut:

Screenshot GitHub yang memperlihatkan pengaturan repositori dengan pengaturan Aktifkan firewall diatur ke Off.

MCP Server

Konfigurasikan Server MCP Modernization GitHub Copilot di bagian Cloud agent pada setelan repositori Anda, seperti yang ditunjukkan dalam contoh berikut:

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

Konfigurasi untuk aplikasi Java

Konfigurasi server MCP Modernization GitHub Copilot di bagian Cloud agent pada pengaturan repositori Anda seperti pada contoh berikut:

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

Screenshot GitHub yang menunjukkan pengaturan agen Cloud repositori dengan bagian konfigurasi MCP disorot.

Steps

Alur interaktif untuk delegasi cloud identik dengan Menilai secara lokal melalui langkah-langkah sumber, repositori, domain, dan konfigurasi. Satu-satunya perbedaan adalah pilihan mode eksekusi dan apa yang terjadi setelahnya.

  1. Jalankan agen modernisasi:

    modernize
    
  2. Pilih Nilai dari menu utama, pilih sumber Anda (file konfigurasi, input manual, atau folder saat ini), pilih repositori, pilih domain penilaian Anda, dan tinjau konfigurasi. Langkah-langkah ini berfungsi persis seperti yang dijelaskan dalam mode Interaktif (menilai secara lokal).

  3. Pilih mode eksekusi. Pilih Delegasikan ke Agen Cloud.

    Cuplikan layar Modernisasi CLI yang memperlihatkan menu penilaian dengan opsi Delegasikan ke Agen Cloud dipilih.

  4. Masukkan jalur output untuk hasil penilaian atau tekan Enter untuk menerima default.

  5. Agen secara otomatis mendelegasikan tugas penilaian untuk setiap repositori ke agen cloud dan menjalankannya di cloud secara paralel.

    Cuplikan layar Modernisasi CLI yang menunjukkan output kemajuan pendelegasian penilaian ke agen cloud di terminal.

    Agen menarik hasil penilaian per aplikasi kembali ke lokal dan menghasilkan laporan agregat secara lokal.

    Cuplikan layar Modernisasi CLI yang memperlihatkan Laporan Penilaian Agregat di terminal.

  6. Setelah penilaian selesai, agen secara otomatis membuka laporan agregat.

Mode non-interaktif (CLI)

Anda juga dapat menggunakan mode non-interaktif dengan menentukan argumen perintah secara langsung. Gunakan perintah modernize assess:

Menilai secara lokal menggunakan file konfigurasi repositori:

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

Menilai beberapa repositori dengan menentukan sumber secara langsung:

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

Menilai dengan mendelegasikan ke agen cloud:

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

Untuk informasi selengkapnya, lihat menilai - perintah CLI.

Integrasi Azure Migrate

Anda dapat mendorong penilaian batch langsung dari proyek Azure Migrate Anda dan meminta laporan yang dihasilkan mengalir kembali ke Azure Migrate secara otomatis.

Alur menyeluruh:

  1. Unduh template awal repos.json dari Azure Migrate. Azure Migrate menghasilkan file JSON yang dicakup ke aplikasi yang Anda pilih untuk penilaian modernisasi. File sudah berisi entri apps[] dan blok output yang menunjuk kembali ke proyek Azure Migrate Anda.

  2. Isi URL repositori. Edit setiap entri repos[] dalam file yang diunduh untuk menambahkan URL repositori GitHub untuk aplikasi. Pertahankan blok apps[] dan output saat Azure Migrate membuatnya - blok tersebut mendorong unggahan.

  3. Jalankan penilaian batch. Jalankan penilaian secara lokal atau dengan mendelegasikan ke agen cloud dengan mengikuti langkah-langkah sebelumnya. Kedua mode eksekusi mengikuti konfigurasi keluaran Azure Migrate.

  4. Laporan diunggah secara otomatis. Setelah penilaian selesai, agen modernisasi mengunggah laporan setiap aplikasi kembali ke proyek Azure Migrate Anda. Tidak memerlukan flag CLI tambahan - setelan output.type di file repos.json mengendalikan pengunggahan.

Memahami laporan agregat

Laporan agregat memberikan tampilan komprehensif di seluruh aplikasi yang dinilai sebagai berikut:

Dashboard

  • Gambaran kondisi portofolio: total aplikasi, berapa banyak yang perlu ditingkatkan, dan jumlah penghambat serta masalah secara agregat.
  • Distribusi teknologi: kerangka kerja apa yang digunakan dan berapa banyak aplikasi yang membagikannya.
  • Distribusi upaya: apakah migrasi keseluruhan adalah usaha kecil atau besar.

Recommendations

  • Azure Services: memetakan dependensi saat ini ke padanan Azure yang direkomendasikan. Dependensi bersama di seluruh aplikasi diputuskan sekali, sehingga Anda menghindari pengerjaan ulang per aplikasi.
  • Target Platform: memandu pilihan hosting, seperti Azure Container Apps versus AKS, dan memunculkan peluang konsolidasi.
  • Jalur Peningkatan: mengidentifikasi aplikasi mana yang memerlukan peningkatan kerangka kerja sebagai prasyarat, memisahkan pekerjaan peningkatan dari pekerjaan migrasi.
  • Cost Estimate: memperkirakan biaya Azure menjalankan setiap aplikasi pada target yang direkomendasikan, sehingga Anda dapat memperhitungkan pengeluaran menjadi prioritas.
  • Strategi Migrasi: merekomendasikan pendekatan migrasi per aplikasi — misalnya, Replatform untuk gerakan lift-and-reshape atau Rearchitect untuk pemfaktoran ulang yang lebih dalam — sehingga setiap aplikasi mendapatkan strategi yang cocok dengan kesiapannya.
  • Gelombang Migrasi: urutan aplikasi berdasarkan kesiapan dan risiko ke dalam fase (misalnya, kemenangan cepat Gelombang 1, cloud inti Gelombang 2, taruhan jangka panjang Gelombang 3). Pendekatan ini memungkinkan kemenangan awal sementara aplikasi yang lebih keras disiapkan secara paralel.

Matriks penilaian aplikasi

  • Gambaran umum cepat untuk setiap aplikasi tentang aspek kerangka kerja, platform target, rekomendasi peningkatan, perincian masalah (Wajib, Potensial, Opsional), ukuran upaya, dan banyak lagi.
  • Tautan ke laporan aplikasi individual untuk menelusuri paling detail saat diperlukan.

Pemecahan masalah teknis penilaian batch

Masalah umum

Kesalahan akses repositori:

  • Verifikasi autentikasi GitHub dengan menggunakan gh auth status.
  • Pastikan Anda memiliki akses ke semua repositori yang tercantum di repos.json.

Kegagalan kloning:

  • Verifikasi URL repositori di repos.json sudah benar dan dapat diakses.
  • Pastikan Anda memiliki izin akses yang tepat untuk semua repositori.
  • Periksa konektivitas jaringan dan pengaturan VPN Anda.

Kegagalan penilaian:

  • Periksa apakah repositori berisi proyek Java, .NET, atau JavaScript/TypeScript yang valid.
  • Verifikasi bahwa file build ada, seperti pom.xml, , build.gradle*.csproj, *.sln, *.slnx, atau package.json.
  • Tinjau pesan kesalahan di output konsol. Peringatan non-fatal (misalnya, file build yang hilang dalam sub-modul) sekarang ditampilkan langsung di output CLI - tinjau dahulu sebelum menganggap laporan tersebut sebagai final.

Masalah delegasi agen cloud:

  • Delegasi agen cloud hanya menerima URL repositori https://github.com/.... Path lokal dan penyedia non-GitHub (GitLab, Azure DevOps) langsung ditolak dengan pesan kesalahan yang jelas. Gunakan eksekusi lokal untuk repositori tersebut.
  • Pastikan Anda memiliki izin yang tepat untuk membuat alur kerja GitHub Actions.
  • Periksa izin GitHub Actions dan batas kuota untuk organisasi Anda.
  • Untuk aplikasi .NET Framework, pastikan konfigurasi runner Windows diatur dengan benar.
  • Periksa konfigurasi server MCP Anda.

Langkah berikutnya

Setelah menyelesaikan penilaian kelompok, Anda dapat:

Lanjutkan alur kerja modernisasi:

Pelajari selengkapnya:

Berikan umpan balik

Input Anda penting! Jika Anda memiliki umpan balik tentang penilaian batch atau agen Modernisasi, buat masalah di repositori github-copilot-appmod atau gunakan formulir umpan balik modernisasi GitHub Copilot.