批次升級讓您能同時在多個倉庫間套用一致的現代化計畫。 本文將向您展示如何在企業規模下高效升級多個應用程式。
透過批次升級,你可以:
- 同時使用相同的升級目標來升級多個應用程式。
- 透過在不同應用程式間使用相似的升級模式來套用一致的模式。
- 在委派給雲端編碼代理時,善用平行執行。
批次升級帶來以下好處:
穩定執行:
- 標準化方法:在所有資料庫中套用相同的現代化模式。
- 降低變異性:確保類似應用的升級路徑一致。
- 可重複使用的策略:在不同應用程式中使用組織專屬技能。
規模與效率:
- 平行處理:使用雲端編碼代理同時處理多個資料庫。
- 自動化工作流程:與 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(非互動,雲端)
批次升級的運作方式
批次升級工作流程:
- 語言偵測:自動從第一個儲存庫偵測專案語言(Java 或 .NET)。
- 計畫建立:根據你的提示建立升級計畫,或使用最新的 LTS 版本。
- 執行:將升級套用到每個儲存庫。
- 驗證:為每個儲存庫建置並驗證變更。
執行批次升級
在你設定好儲存庫並選擇執行模式後,開始批次升級。
互動模式(本地升級)
執行現代化代理程式:
modernize代理程式偵測該
repos.json檔案並顯示儲存庫清單:選擇要升級的倉庫,然後按下
Enter確認你的選擇。-
按
Ctrl+A選擇所有儲存庫。 -
或者用方向鍵 導航,按鍵
Enter選擇個別倉庫。
-
按
選擇2. 升級從主選單中。
要執行升級,請選擇 1。在本地升級。
代理程式會自動:
- 根據您的要求,為您建立升級方案。
- 依序將計畫套用到每個儲存庫。
- 在變更後建置並驗證每個儲存庫。
- 顯示每個儲存庫的進度與摘要。
互動模式(委派給雲端編碼代理)
前置條件:設定 MCP 伺服器
在執行升級前,先在每個倉庫中配置 GitHub Copilot 現代化 MCP 伺服器。
對於 Java 應用程式,請在儲存庫設定中的雲端編碼代理程式區塊中新增此設定:
{
"mcpServers": {
"app-modernization": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"-y",
"@microsoft/github-copilot-app-modernization-mcp-server"
]
}
}
}
Steps
執行現代化代理程式:
modernize代理程式偵測該
repos.json檔案並顯示儲存庫清單:選擇要升級的倉庫,然後按下
Enter確認你的選擇。-
按
Ctrl+A選擇所有儲存庫。 -
或者用方向鍵 導航,按鍵
Enter選擇個別倉庫。
-
按
選擇2. 升級從主選單中。
要執行升級,請選擇 2。委託給雲端編碼代理。
代理程式會自動:
非互動模式(CLI)
若要自動化及 CI/CD 整合,請使用以下 modernize upgrade 指令:
本地升級:
modernize upgrade "Java 21"
使用雲端編碼代理程式升級:
modernize upgrade "Java 21" --delegate cloud
指令會自動偵測該 repos.json 檔案並處理所有儲存庫。
備註
關於批次無頭執行及更多 CLI 選項,請參閱 CLI 指令參考中的 多儲存庫設定 章節。
審查結果
當批次升級完成後:
請檢查終端機中顯示的彙整報告。
檢視個別儲存庫變更:
cd <repository-name> git status git diff建立合併请求 以進行順利升級:
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 現代化回饋表單。