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 .NET-Team von Microsoft für Entwicklungsdienste 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-Team für Entwicklungsdienste das Release von .NET Core 3.0 plante, entschied es sich dafür, große Änderungen vorzunehmen, um für mehr Konsistenz zu sorgen und die Mitwirkenden vom Potenzial dieses Projekts zu überzeugen.

"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?"

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 gespeichert. 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.

"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."

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 mehreren Repositorys wechseln, die Grundursache eines Fehlers finden sowie diesen beheben 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.

Sehen Sie sich die Journey der Teams und den Entscheidungsprozess im Detail an.

Weiterlesen