使用GitHub Copilot现代化代理的批处理计划

使用 Batch 计划,可以使用一个工作流和共享现代化目标为多个存储库生成现代化计划。 本文介绍如何在开始执行之前跨多个应用程序创建一致的计划。

通过使用批处理计划,可以:

  • 在一个引导工作流中为多个应用程序创建计划
  • 跨存储库应用一致的现代化目标
  • 使用评估结果作为上下文 来提高计划质量。
  • 在执行前查看计划 ,并确定要先实现现代化哪些存储库。

Batch 计划具有以下优势:

  • 一致性和控制:

    • 统一意图:从一个可跨仓库复用的现代化提示词开始。
    • 可比较的输出:在执行前并排比较各个计划。
    • 灵活的优化:编辑每个生成的计划以反映特定于存储库的需求。
  • 规模化规划:

    • 项目组合可见性:了解同一请求如何在应用程序中应用。
    • 可重用准备:重复使用早期阶段的相同存储库列表和评估输出。
    • 更快的决策:首先生成计划,然后只执行你批准的存储库。

先决条件

  • 现代化命令行界面 (CLI)
  • 访问要计划的所有存储库。
  • 配置了 GitHub 身份验证(gh auth login)。
  • 如果您希望代理将评估结果用作规划时的上下文,建议使用已完成的批量评估

小窍门

不需要批处理评估,但它通常会生成更准确且可操作的计划,因为代理可以引用检测到的问题和迁移机会。

配置存储库

现代化代理支持多种方法来指定要规划的存储库:

  • 当前文件夹:在当前工作目录中为项目创建计划。
  • 手动输入:直接输入本地目录路径或远程 Git URL。
  • 存储库配置文件:使用列出所有存储库的 JSON 配置文件。

存储库配置文件

对于跨多个存储库的批处理操作,请创建 JSON 配置文件以列出所有存储库。 例如,在工作目录中创建它 .github/modernize/repos.json ,或提供自定义路径。

格式 (存储库数组):

[
    {
        "name": "PhotoAlbum-Java",
        "url": "https://github.com/Azure-Samples/PhotoAlbum-Java.git"
    },
    {
        "name": "PhotoAlbum",
        "url": "https://github.com/Azure-Samples/NewsFeedSite.git"
    }
]

每个存储库条目支持以下字段:

领域 Description 必需
name 存储库的友好名称(用于报表和仪表板)。 是的
url HTTPS 或 SSH 格式的 Git 克隆 URL。 其中之一urlpath

小窍门

可以在批处理评估、批处理计划和批处理升级工作流之间使用相同的 repos.json 文件。

在互动模式下选择repos.json时,新式化代理会自动检测.github/modernize/repos.json位于的文件。 还可以提供自定义路径。

批处理计划的工作原理

批处理规划工作流:

  1. 存储库选择:选择要包含的存储库。
  2. 上下文选择:可以选择使用可用的评估报告作为输入。
  3. 提示定义:描述现代化目标一次,并在存储库中应用它。
  4. 澄清:回答代理的任何后续问题。
  5. 计划生成:代理为每个选定的存储库创建一个计划。

每个生成的计划都保存在目标存储库中,可以在执行之前进行查看或编辑。

运行批处理计划

配置存储库后,启动批处理规划工作流。

交互模式

  1. 运行现代化工具:

    modernize
    
  2. 从主菜单中选择 “计划 ”。

    ○ How would you like to modernize your app?
    
        Assess
        Analyze modernization readiness across one or multiple applications
      > Plan
        Generate a structured plan to guide the agent
        Execute
        Run the tasks defined in the modernization plan
    
      Or select a quick-start scenario:
    
        Upgrade
            Upgrade runtimes and frameworks across one or multiple applications
    
  3. 选择如何指定目标存储库。 从配置文件中选择以使用repos.json文件。

    ○ Choose target repositories
    
        1. Current folder
          /Users/username/project
        2. Manual input
          Enter local path or remote URL
      > 3. From a config file
          /path/to/.github/modernize/repos.json
    

    小窍门

    还可以选择 “手动输入 ”以直接输入本地路径或远程 Git URL,或者选择 “当前”文件夹 来规划当前目录中的项目。

  4. repos.json如果在默认位置检测到该文件,代理会自动填充该文件。 否则,请输入配置文件的路径,然后按 Enter

  5. 默认情况下,所有存储库均处于选中状态。 取消选择想要跳过的任何存储库,然后按 Enter 确认选择。

    • 使用箭头键 进行导航,然后按 空格 键切换单个存储库。
  6. 选择 1. 在本机生成计划 以在您的计算机上生成计划,或选择 2. 提交给云代理 以由云代理生成计划。 选项 2 是实验性的。

  7. 输入计划名称或按 Enter 以使用默认值。

  8. 输入您的现代化目标作为提示 例如:

    • upgrade to Spring Boot 3 and prepare for Azure deployment
    • migrate the database to Azure PostgreSQL
    • containerize the application and deploy to Azure Container Apps
  9. Enter 生成计划。

  10. 代理自动:

    • 克隆每个所选存储库,或为每个存储库向云端代理提交一个作业。
    • 在本地为每个存储库生成计划,或者在每个存储库中创建一个包含该计划的 PR。

后续步骤

完成批处理计划后,查看这些计划,并使用 execute 命令执行它们:

提供反馈

如果您对批处理计划或现代化代理有反馈,请在 github-copilot-appmod 存储库中创建一个议题,或使用 GitHub Copilot 现代化反馈表单