Das .NET-Infrastrukturteam investiert in Konsistenz, um Open-Source-Innovationen voranzubringen
Sehen Sie sich an, wie Entwickler mithilfe von gemeinsamen Tools und einem einzigen gemeinsamen CI-System für alle GitHub-Repositorys ihre Produktivität steigern können.
Die Herausforderung: Optimierung der Zusammenarbeit zwischen Open-Source-Mitwirkenden
.NET Foundation ist eine unabhängige Organisation, die gegründet wurde, um mithilfe von offener Entwicklung und Zusammenarbeit Innovationen zu fördern. Sie unterstützt eine Reihe von großen und komplexen Open-Source-Projekten wie .NET Core. Das Microsoft .NET Engineering Services-Team trägt zu dem Projekt bei und ist für einen Großteil der Infrastruktur verantwortlich, die die Zusammenarbeit von Mitwirkenden überall auf der Welt ermöglicht.
Im Rahmen des Projekts werden Dutzende von Git-Repositorys auf GitHub, viele Tools und mehrere CI-Systeme (Continuous Integration) verwendet. Dies führte in der Vergangenheit zu Verwirrungen, was die Produktivität beeinträchtigte. Der Umfang des Projekts machte alles noch komplexer. Beispielsweise führt das Roslyn -Repository (C#-Compiler) allein 600.000 automatisierte Tests pro Iteration eines Pull Requests aus. Da mehr als 50 Pull Requests pro Woche (inklusive mehrerer Iterationen) anfallen, liegt die Anzahl der CI-Tests im Milliardenbereich. Bei CoreFx (Bibliotheken) ist die Zahl sogar noch höher. Als das .NET Engineering Services-Team das Release von .NET Core 3.0 plante, entschied es sich dafür, umfassende Änderungen vorzunehmen, um für mehr Konsistenz zu sorgen und es den Mitwirkenden zu ermöglichen, das Potenzial dieses Projekts vollständig auszuschöpfen.
Die Herausforderung: Wechsel zu einem Cloudbetriebsmodell
"Eine verteilte Repositorystruktur und verteilte Tools erschweren Entwicklern den Wechsel von einem Repository zu einem anderen erheblich. Wenn dies für Microsoft-Entwickler bereits solche Schwierigkeiten bereitet, wie können wir dann erwarten, dass die einzelnen Mitwirkenden damit zurechtkommen?"
Matt Mitchell, Principal Software Engineer, .NET-Team für Entwicklungsdienste
Steigerung der Produktivität mithilfe von gemeinsamen Tools und einem einzelnen CI-System
Damit Entwickler leichter zwischen verschiedenen Komponenten des Softwarestapels wechseln können, hat das .NET-Team für Entwicklungsdienste alle Repositorys unter einer gemeinsamen Verzeichnisstruktur, einheitlichen Befehlen und einer Build- und Testlogik zusammengefasst. Zudem hat das Team weitere Hindernisse für die Produktivität beseitigt, indem es alle bestehenden Workflows aus den verschiedenen CI-Systemen in ein einzelnes System in Azure Pipelines übertrug. Da das System vollständig verwaltet wird, besteht nicht mehr das Problem, dass die CI-Serverinfrastruktur verwaltet werden muss. Das Team testet derzeit die Konfiguration als Code über YAML-Dateien, die auf GitHub gespeichert werden. YAML-Pipelines werden überall verwendet. Während einige Repositorys den CI-Prozess in der Vergangenheit seriell ausgeführt haben (wobei die Entwickler zwischen den einzelnen Codeiterationen zwei bis drei Stunden warten mussten), verlaufen jetzt alle CI-Pipelines parallel, um schnellere Iterationen zu ermöglichen.
Die Herausforderung: Wechsel zu einem Cloudbetriebsmodell
"Da wir uns nun nicht mehr um die betrieblichen Aspekte von CI kümmern müssen, können wir uns auf weitere Verbesserungen konzentrieren, von denen alle, einschließlich Microsoft-Entwicklern und einzelnen Mitwirkenden, gleichermaßen profitieren."
Matt Mitchell, Principal Software Engineer, .NET-Team für Entwicklungsdienste
Gute Zusammenarbeit ist der Schlüssel zu einem guten Produkt
Heutzutage können Entwickler einfacher als früher zwischen Repositorys wechseln, die Grundursache eines Fehlers finden sowie einen Fix vorschlagen und testen. Dafür ist mittlerweile viel weniger Fachwissen notwendig als in der Vergangenheit. Diese optimierte Open-Source-Kollaboration auf GitHub bietet Entwicklern die Möglichkeit, schneller Änderungen vorzunehmen, indem sie zusammen qualitativ hochwertige Software schreiben, testen, erstellen und veröffentlichen. Da außerdem das .NET-Team für Entwicklungsdienste für den gesamten Stapel Änderungen an der Infrastruktur vornehmen kann, stellt es Verbesserungen für Tools bereit, die Entwickler schneller und effizienter für all ihre Repositorys verwenden können.