略過導覽

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

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

閱讀完整案例

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

作為一個透過開放式開發和共同作業來促進創新的獨立組織,.NET Foundation 支援大量複雜的開放原始碼專案,包括 .NET Core。Microsoft .NET Engineering Services 小組為專案做出貢獻,並負責許多讓世界各地參與者能够共同工作的基礎結構。

因為 GitHub 上有數十個不同的 Git 存放庫、各種工具,以及在整個專案中使用的多個不同持續整合 (CI) 系統,因此存在很多阻礙生產力的混亂。專案的巨大規模更增加了複雜性。例如,Roslyn (C# 編譯器) 存放庫會針對提取要求的一次反覆運算,單獨執行超過 600,000 個自動測試。每週有超過 50 個提取要求,每個要求有多個反覆運算,CI 測試的數目達到數十億。對於 CoreFx (程式庫),數字甚至更高。由於 .NET Engineering Services 小組規劃了 .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 Engineering Services 小組會將所有存放庫放在一般目錄結構、命令集以及建置及測試邏輯之下。小組已透過將所有現有工作流程從不同的 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 工程服務小組可以在完整堆疊中變更基礎結構,因此,他們能夠提供工具改進功能,讓開發人員能更快且更有效率地在所有存放庫中加以利用。

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

閱讀完整案例