共用方式為


使用 GitHub Copilot 現代化代理進行批次升級

批次升級讓您能同時在多個倉庫間套用一致的現代化計畫。 本文將向您展示如何在企業規模下高效升級多個應用程式。

透過批次升級,你可以:

  • 同時使用相同的升級目標來升級多個應用程式
  • 透過在不同應用程式間使用相似的升級模式來套用一致的模式
  • 在委派給雲端編碼代理時,善用平行執行

批次升級帶來以下好處:

  • 穩定執行:

    • 標準化方法:在所有資料庫中套用相同的現代化模式。
    • 降低變異性:確保類似應用的升級路徑一致。
    • 可重複使用的策略:在不同應用程式中使用組織專屬技能。
  • 規模與效率:

    • 平行處理:使用雲端編碼代理同時處理多個資料庫。
    • 自動化工作流程:與 CI/CD 管線整合,以進行定期的現代化。
    • 節省時間:將整體現代化時間從數週縮短至數小時。

先決條件

  • 命令列介面的現代化
  • 一個完成的 批次評估 (建議但非必需)。
  • 所有儲存庫使用相同的程式語言(Java 或 .NET)。
  • 存取你想升級的所有儲存庫。
  • GitHub 認證已設定(gh auth login)。

這很重要

批次升級中的所有儲存庫必須使用相同的程式語言。 如果儲存庫使用不同語言,批次升級會將該儲存庫標記為失敗並跳過。

設定存放庫

要啟用批次升級,請在工作目錄中建立 .github/modernize/repos.json 一個檔案,列出你想升級的所有儲存庫。

小提示

對於範例倉庫,先分叉它們,並確保你有管理員權限將工作委派給雲端編碼代理。

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

儲存庫配置

每篇條目要求:

  • 名稱:對資料庫的友善名稱(用於報告與儀表板)。
  • 網址:Git 克隆 URL(HTTPS 格式)。

小提示

只要你有權限,你可以包含不同組織的資料庫,並使用不同的認證方法。

檔案位置

您必須將 repos.json 檔案放置於 .github/modernize/repos.json

現代化代理程式在執行批次操作時會自動偵測此檔案。

選擇你的執行模式

批次升級支援兩種執行模式及兩種互動方式:

執行模式

地方處決

  • 最佳用途:測試、較小的儲存庫集合(1-5 個儲存庫),或你偏好本地控制時。
  • 運作方式:在你的本機上依序處理儲存庫。
  • 需要設定:除了基本的先修條件外,沒有其他設定。

雲端編碼代理委派

  • 最適合:企業規模營運、大型專案組合(5個以上版本庫)或平行處理。
  • 運作方式:將任務提交給 GitHub Cloud Coding Agents,讓其在雲端平行執行。
  • 需要設定:每個儲存庫的 MCP 伺服器設定(設定時已設定)。

小提示

透過平行處理資料庫,Cloud Coding Agent 委派可將整體現代化時間從數小時縮短至數分鐘。

互動方法

互動模式(TUI)

  • 具備指引功能的選單與提示體驗。
  • 最適合首次使用者或想檢視選項時使用。
  • 支援本地與雲端執行。

非互動模式(CLI/無頭模式)

  • 基於命令列,完全自動化。
  • 最適合 CI/CD 管線與自動化。
  • 支援本地與雲端執行並帶有 --delegate cloud 旗標功能。

備註

你可以將任何執行模式與任何互動方式結合。 例如:

  • modernize (互動式,本地)
  • modernize → 選擇雲端編碼代理(互動式、雲端)
  • modernize upgrade "Java 21" (非互動式,本地)
  • modernize upgrade "Java 21" --delegate cloud (非互動,雲端)

批次升級的運作方式

批次升級工作流程:

  1. 語言偵測:自動從第一個儲存庫偵測專案語言(Java 或 .NET)。
  2. 計畫建立:根據你的提示建立升級計畫,或使用最新的 LTS 版本。
  3. 執行:將升級套用到每個儲存庫。
  4. 驗證:為每個儲存庫建置並驗證變更。

執行批次升級

在你設定好儲存庫並選擇執行模式後,開始批次升級。

互動模式(本地升級)

  1. 執行現代化代理程式:

    modernize
    
  2. 代理程式偵測該 repos.json 檔案並顯示儲存庫清單:

    Modernize CLI 的截圖,顯示終端機中的「選擇倉庫」清單。

  3. 選擇要升級的倉庫,然後按下 Enter 確認你的選擇。

    • Ctrl+A 選擇所有儲存庫。
    • 或者用方向鍵 導航,按鍵 Enter 選擇個別倉庫。
  4. 選擇2. 升級從主選單中。

    Modernize CLI 的截圖,顯示終端機中升級執行時與框架選單選項。

  5. 要執行升級,請選擇 1。在本地升級

    Modernize CLI 的截圖,顯示終端機中「本地升級」選單選項。

  6. 代理程式會自動:

    • 根據您的要求,為您建立升級方案。
    • 依序將計畫套用到每個儲存庫。
    • 在變更後建置並驗證每個儲存庫。
    • 顯示每個儲存庫的進度與摘要。

    Modernize CLI 的截圖,顯示終端機中每個儲存庫的升級進度。

互動模式(委派給雲端編碼代理)

前置條件:設定 MCP 伺服器

在執行升級前,先在每個倉庫中配置 GitHub Copilot 現代化 MCP 伺服器。

對於 Java 應用程式,請在儲存庫設定中的雲端編碼代理程式區塊中新增此設定:

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

GitHub 截圖顯示倉庫的 Coding agent 設定窗格,並標示了 MCP 設定區塊。

Steps

  1. 執行現代化代理程式:

    modernize
    
  2. 代理程式偵測該 repos.json 檔案並顯示儲存庫清單:

    Modernize CLI 的截圖,顯示終端機的儲存庫清單。

  3. 選擇要升級的倉庫,然後按下 Enter 確認你的選擇。

    • Ctrl+A 選擇所有儲存庫。
    • 或者用方向鍵 導航,按鍵 Enter 選擇個別倉庫。
  4. 選擇2. 升級從主選單中。

  5. 要執行升級,請選擇 2。委託給雲端編碼代理

    Modernize CLI 的截圖,顯示終端機中「委派到雲端編碼代理」選單選項。

  6. 代理程式會自動:

    • 為每個儲存庫建立升級計畫。

    • 為每個儲存庫提交一個雲端編碼代理工作。

    • 能在雲端獨立並行執行工作。

    • 顯示每個儲存庫的工作 ID 與 PR URL。

      Modernize CLI 的截圖,顯示終端機中將升級委派給雲端編碼代理的進度。

    • 將任務委派給 AgentHQ 以進行平行執行。

      GitHub 截圖顯示 Agents 面板,升級任務委派給 AgentHQ。

    • 即時追蹤每個任務的進度。

      GitHub 截圖顯示 Agents 面板,並追蹤個別 Cloud Coding Agent 升級任務的進度。

    • 顯示每項完成任務的升級摘要。

      GitHub 截圖顯示 Agents 面板,裡面有個別 Cloud Coding Agent 任務的升級摘要。

非互動模式(CLI)

若要自動化及 CI/CD 整合,請使用以下 modernize upgrade 指令:

本地升級:

modernize upgrade "Java 21"

使用雲端編碼代理程式升級:

modernize upgrade "Java 21" --delegate cloud

指令會自動偵測該 repos.json 檔案並處理所有儲存庫。

備註

關於批次無頭執行及更多 CLI 選項,請參閱 CLI 指令參考中的 多儲存庫設定 章節。

審查結果

當批次升級完成後:

  1. 請檢查終端機中顯示的彙整報告

  2. 檢視個別儲存庫變更

    cd <repository-name>
    git status
    git diff
    
  3. 建立合併请求 以進行順利升級:

    cd <repository-name>
    gh pr create --title "Upgrade to Java 21" --body "Automated upgrade by modernization agent"
    

批次升級故障排除

常見問題

儲存庫存取錯誤:

  • 請使用 gh auth status 驗證 GitHub 身份驗證。
  • 確保你能存取所有儲存庫。repos.json

語言不匹配錯誤:

  • 確保所有軟體 repos.json 庫都使用相同的語言(Java 或 .NET)。
  • 為不同語言建立獨立的批次操作。

複製失敗:

  • 請確認儲存 repos.json 庫的網址是否正確且可存取。
  • 確保你擁有所有資料庫的適當存取權限。
  • 檢查網路連線和 VPN 設定。

升級後的構建失敗:

  • 檢視彙整報告中的建置錯誤訊息。
  • 檢查是否需要更新其他相依性。
  • 確認第三方函式庫與新版本的相容性。

個別儲存庫故障:

  • 即使個別儲存庫失效,批次處理仍會繼續。
  • 檢視彙整報告以識別失敗的儲存庫。
  • 請查看錯誤日誌中的特定錯誤訊息。
  • 逐一重試失敗的儲存庫。

雲端編碼代理程式故障:

  • 請檢查 GitHub Actions 的權限與配額限制。
  • 對於 .NET Framework,請確保 Windows 執行器的設定正確。

下一步

完成批量升級後,你可以:

持續進步:

深入了解:

提供意見反應

我們重視您的意見! 如果你對批次升級或現代化代理有任何回饋,請 在 github-copilot-appmod 倉庫建立問題 ,或使用 GitHub Copilot 現代化回饋表單