.NET 基礎結構團隊投資一致性以加速開放原始碼創新
觀看 GitHub 存放庫間的共用工具和單一共用 CI 系統如何大幅提升開發人員生產力。
挑戰:為開放原始碼參與者簡化共同作業
作為透過開放式開發與共同作業來促進創新的獨立組織,.NET Foundation 支援一系列大量且複雜的開放原始碼專案,包括 .NET Core。Microsoft .NET 工程服務團隊參與該專案,並負責建立許多基礎結構,讓世界各地的參與者能夠共同作業。
由於在 GitHub 上有數十個不同的 git 存放庫、各種工具以及用於專案的多個不同持續整合 (CI) 系統,因此存在許多影響生產率的疑惑。專案的龐大規模增加了複雜度。例如,單單是 Roslyn (C# 編譯器) 存放庫就會對提取要求的一次反覆運算執行 600,000 多個自動化的測試。在每週超過 50 個提取要求,而且每個要求都要多次反覆運算的情況下,CI 測試數多達數十億。至於 CoreFx (程式庫),數目甚至會更高。在 .NET 工程服務團隊為 .NET Core 3.0 版本進行規劃時,他們決定進行重大變更以建立更好的一致性,並讓參與者能夠實現出專案的完整潛力。
挑戰:適應雲端作業模型
"分散式存放庫結構和工具讓開發人員更難從一個存放庫移至另一個 … 如果這對 Microsoft 開發人員來說非常困難,我們怎麼能期望大部分的個人參與者都能夠弄清楚哪?"
.NET 工程服務首席軟體工程師 Matt Mitchell
透過共用工具和單一 CI 系統來改善生產力
為了讓開發人員能更輕鬆在軟體堆疊的不同部分之間移動,.NET 工程服務團隊致力於將所有存放庫置於通用的目錄結構、一組命令以及建置與測試邏輯之下。該團隊藉由將所有現有工作流程從不同的 CI 系統移至 Azure Pipelines. 中的單一系統,進而消除降低生產率的障礙。由於系統完全受控,因此他們不再有管理 CI 伺服器基礎結構的負擔。該團隊現在正透過儲存於 GitHub 中的 YAML 檔案來實作組態即程式碼,並且 YAML 管道隨處可見。儘管某些存放庫先前以連續方式進行 CI (需要開發人員不時在其程式碼的反覆運算之間等待二到三個小時),但是現在所有 CI 管線都已平行化以提供更快的反覆運算。
挑戰:適應雲端作業模型
"現在,我們更需要擔心 CI 的作業層面,我們可以專注於所有人員 (包括 Microsoft 開發人員和個別參與者) 都會感到的進一步改進。"
.NET 工程服務首席軟體工程師 Matt Mitchell
更優良的共同作業造就更優質的產品
現在,開發人員可以更輕鬆地在存放庫之間移動、找出錯誤的根本原因,並提出及測試修正,這些幾乎都不需要過去所需的專業知識。GitHub 中的這種簡化開放原始碼共同作業,可讓開發人員在共同編寫、測試、建置與傳遞高品質軟體時,更快地創新。而且由於 .NET 工程服務小組可以在完整堆疊中變更基礎結構,因此,他們能夠提供工具改進功能,讓開發人員能更快且更有效率地在所有存放庫中加以利用。