通过


使用 GitHub Copilot 现代化代理进行批量评估

通过批处理评估,可以同时分析多个应用程序,从而全面了解应用程序的现代化环境。 本文指导你完成高效评估多个存储库的过程。

批处理评估对于迁移规划尤其有用,因为它使你能够一次性有效地评估各种应用程序的准备情况和要求。 通过使用批处理评估,可以同时评估不同的存储库,并为每个应用程序获取详细的评估报告。 它生成两种类型的报告来支持迁移规划:

  • 每个应用报告:提供有关在单个存储库级别确定的所有现代化问题的详细见解。
  • 聚合报表:提供所有评估应用程序的总体视角、提供摘要见解、有关 Azure 服务的建议、目标平台和升级路径。 此外,聚合报表还包含用于轻松访问每个应用报表的快捷方式。

批处理评估具有以下优势:

  • 跨应用程序可见性:

    • 聚合报表:跨应用程序获取全面视图。
    • 跨存储库分析:确定应用程序之间的常见模式和依赖关系。
    • 优先级见解:了解哪些应用程序需要立即注意。
  • 规模和效率

    • 并行处理:使用云编码代理同时处理多个存储库。
    • 自动化工作流:与用于计划评估的 CI/CD 管道集成。
    • 节省时间:将总评估时间从数周减少到数小时。

先决条件

  • 现代化命令行界面 (CLI)
  • 访问要评估的所有存储库。
  • 已配置 GitHub 身份验证(gh auth login)。

配置存储库

若要启用批处理评估,请在工作目录中创建一个 .github/modernize/repos.json 文件,其中列出了要评估的所有存储库。

请确保你对存储库具有适当的权限,或为其创建分支。

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

存储库配置

每个条目都需要:

  • 名称:存储库的友好名称(用于报表和仪表板)。
  • url:采用 HTTPS 格式的 Git 克隆 URL。

小窍门

你可以包括来自不同组织的存储库,只要你有权访问,就可以使用不同的身份验证方法。

文件位置

必须将repos.json文件放置于.github/modernize/repos.json

新式化代理在运行批处理作时自动检测此文件。

运行批量评估

有两种执行模式可用:

  • 本地执行:现代化代理在本地计算机上逐个处理存储库。 此模式最适合一组较小的应用程序或初始测试。
  • 云编码代理委派:现代化代理将任务提交到 GitHub 云编码代理,以便在云中并行处理。 对于多存储库方案,此模式更快。

小窍门

通过使用云编码代理委派,可以跨所有存储库启用并行执行。 此方法大大减少了大型投资组合的总评估时间。

交互模式(在本地评估)

  1. 运行现代化工具:

    modernize
    
  2. 代理检测到 repos.json 文件并显示存储库列表:

    新式化 CLI 的屏幕截图,其中显示了终端中的存储库列表。

  3. 选择要评估的存储库,然后按 Enter 以确认选择。

    • Ctrl+A 以选择所有存储库。
    • 使用箭头键 导航并按 Space 以选择单个存储库。
  4. 选择 1。 从主菜单中评估应用程序。

    新式化 CLI 的屏幕截图,其中显示了终端中的现代化菜单。

  5. 若要运行评估,请选择本地评估或委托给云编码代理。 选择 1. 本地评估

    新式化 CLI 的屏幕截图,其中显示了终端中的评估菜单。

  6. 代理自动:

    • 克隆所有选定的存储库。

    • 逐个对每个存储库运行评估。

    • 生成单个评估报告。

      新式化 CLI 的屏幕截图,其中显示了终端中单个评估报表生成的输出。

    • 创建聚合报表。

      新式化 CLI 的屏幕截图,其中显示了终端中聚合报表生成的输出。

  7. 评估完成后,代理会自动打开聚合报表。

    新式化 CLI 的屏幕截图,其中显示了聚合报表的内容。

交互模式(委派给云编码代理)

首先,在每个应用程序存储库中配置云编码代理。 若要配置云编码代理,请分叉示例存储库。

.NET 应用程序的配置

配置为在 Windows 上运行用于 .NET Framework 应用程序

默认情况下,Copilot 编码代理在 Ubuntu Linux 环境中运行。 对于 .NET Framework 应用程序,需要 Windows 环境。 若要启用它,请在应用程序代码仓库的main分支中配置.github/workflows/copilot-setup-steps.yaml,如以下示例所示:

# 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

详细了解: 使用 Copilot 设置步骤自定义 Copilot 的开发环境

禁用防火墙

在存储库设置中禁用 Copilot 编码代理的集成防火墙,如下图所示:

GitHub 的屏幕截图,其中显示了“启用防火墙”设置设置为“关闭”的存储库设置。

Java 应用程序的配置

在存储库设置的云编码代理部分中配置 GitHub Copilot 现代化 MCP 服务器,如以下示例所示:

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

GitHub 的屏幕截图,其中显示了存储库编码代理设置,其中突出显示了 MCP 配置部分。

步骤

  1. 运行现代化工具:

    modernize
    
  2. 代理检测到 repos.json 文件并显示存储库列表:

    新式化 CLI 的屏幕截图,其中显示了终端中的存储库列表。

  3. 选择要评估的存储库,然后按 Enter 以确认选择。

    • Ctrl+A 以选择所有存储库。
    • 使用箭头键 导航并按 Space 以选择单个存储库。
  4. 选择 1。 从主菜单中评估应用程序。

    新式化 CLI 的屏幕截图,其中显示了终端中的现代化菜单。

  5. 若要运行评估,请选择 2。委托给云编码代理

    新式化 CLI 的屏幕截图,其中显示了“委派到云编码代理”选项的评估菜单。

  6. 代理会自动将每个存储库的评估任务委托给云编码代理,并在云中并行执行它们。

    Modernize CLI 的屏幕截图,显示了在终端中将评估任务委派给云编码代理的进度输出。

    然后,代理将每个应用评估结果拉回本地,并在本地生成聚合报表。

    新式化 CLI 的屏幕截图,其中显示了终端中的聚合评估报告。

  7. 评估完成后,代理会自动打开聚合报表。

非交互模式 (CLI)

还可以通过直接指定命令参数来使用非交互式模式。 使用 modernize assess 命令:

在本地评估:

modernize assess --multi-repo

通过委托给云编码代理进行评估:

modernize assess --delegate cloud

有关详细信息,请参阅 评估 - CLI 命令

了解聚合报表

聚合报表提供跨评估应用程序的综合视图,如下所示:

仪表板

  • 项目组合健康状况概况:应用总数、需要升级的数量,以及总括阻塞问题和问题数量统计。
  • 技术分发:正在使用哪些框架以及有多少应用共享它们。
  • 工作量分配:总体迁移是一项小型或大型迁移。

建议

  • Azure 服务:将当前依赖项映射到建议的 Azure 等效项。 跨应用的共享依赖项仅需决定一次,因此可以避免每个应用的重复工作。
  • 目标平台:指导托管选择,例如容器应用与 AKS,并呈现整合机会。
  • 升级路径:确定哪些应用需要框架升级作为先决条件,将升级工作与迁移工作分开。
  • 迁移波:按就绪情况和风险对应用进行排序,分为阶段。 方法使得在准备更复杂的应用程序的同时取得初步成功。

应用程序评估矩阵

  • 有关框架、目标平台、升级建议、问题细分(必需、潜在、可选)、工作量调整等各方面的应用程序的快速概述。
  • 指向各个应用报表的链接,以便在需要时深入查看。

批处理评估疑难解答

常见问题

存储库访问错误:

  • 使用 gh auth status.. 验证 GitHub 身份验证。
  • 请确保有权访问列出的 repos.json所有存储库。

克隆失败:

  • 验证存储库 repos.json URL 是否正确且可访问。
  • 请确保对所有存储库具有正确的访问权限。
  • 检查网络连接和 VPN 设置。

评估失败:

  • 检查存储库是否包含有效的 Java 或 .NET 项目。
  • 验证是否存在生成文件,例如pom.xmlbuild.gradle*.csproj*.sln
  • 查看控制台输出中的错误消息。

云编码代理委派问题:

  • 请确保你有权创建 GitHub Actions 工作流。
  • 检查组织的 GitHub Actions 权限和配额限制。
  • 对于 .NET Framework 应用,请确保正确设置 Windows 运行程序配置。
  • 检查 MCP 服务器配置。

后续步骤

完成批次评估后,您可以:

继续现代化工作流:

了解详细信息:

提供反馈

我们重视你的输入! 如果对批处理评估或现代化代理有任何反馈, 请在 github-copilot-appmod 存储库中创建问题 ,或使用 GitHub Copilot 现代化反馈表单