.NET 基礎結構團隊投資一致性以加速開放原始碼創新

觀看 GitHub 存放庫間的共用工具和單一共用 CI 系統如何大幅提升開發人員生產力。

挑戰:為開放原始碼參與者簡化共同作業

作為透過開放式開發與共同作業來促進創新的獨立組織,.NET Foundation 支援一系列大量且複雜的開放原始碼專案,包括 .NET Core。Microsoft .NET 工程服務團隊參與該專案,並負責建立許多基礎結構,讓世界各地的參與者能夠共同作業。

由於在 GitHub 上有數十個不同的 git 存放庫、各種工具以及用於專案的多個不同持續整合 (CI) 系統,因此存在許多影響生產率的疑惑。專案的龐大規模增加了複雜度。例如,單單是 Roslyn (C# 編譯器) 存放庫就會對提取要求的一次反覆運算執行 600,000 多個自動化的測試。在每週超過 50 個提取要求,而且每個要求都要多次反覆運算的情況下,CI 測試數多達數十億。至於 CoreFx (程式庫),數目甚至會更高。在 .NET 工程服務團隊為 .NET Core 3.0 版本進行規劃時,他們決定進行重大變更以建立更好的一致性,並讓參與者能夠實現出專案的完整潛力。

"A distributed repo structure and tooling makes it a lot harder for developers to move from one repo to another … And if it's this hard on Microsoft developers, how can we expect most individual contributors to figure it out?"

.NET 工程服務首席軟體工程師 Matt Mitchell

透過共用工具和單一 CI 系統來改善生產力

為了讓開發人員能更輕鬆在軟體堆疊的不同部分之間移動,.NET 工程服務團隊致力於將所有存放庫置於通用的目錄結構、一組命令以及建置與測試邏輯之下。該團隊藉由將所有現有工作流程從不同的 CI 系統移至 Azure Pipelines 中的單一系統,進而消除降低生產率的障礙。由於系統完全受控,因此他們不再有管理 CI 伺服器基礎結構的負擔。該團隊現在正透過儲存於 GitHub 中的 YAML 檔案來實作組態即程式碼,並且 YAML 管道隨處可見。儘管某些存放庫先前以連續方式進行 CI (需要開發人員不時在其程式碼的反覆運算之間等待二到三個小時),但是現在所有 CI 管線都已平行化以提供更快的反覆運算。

"Now that we longer need to worry about the operational aspects of CI, we're free to focus on further improvements that will be felt by all—including Microsoft developers and individual contributors alike."

.NET 工程服務首席軟體工程師 Matt Mitchell

更優良的共同作業造就更優質的產品

現在,開發人員可以更輕鬆地在存放庫之間移動、找出錯誤的根本原因,並提出及測試修正,這些幾乎都不需要過去所需的專業知識。GitHub 中的這種簡化開放原始碼共同作業,可讓開發人員在共同編寫、測試、建置與傳遞高品質軟體時,更快地創新。而且由於 .NET 工程服務小組可以在完整堆疊中變更基礎結構,因此,他們能夠提供工具改進功能,讓開發人員能更快且更有效率地在所有存放庫中加以利用。

深入了解小組的旅程和決策制定。

閱讀完整案例