Navigation überspringen

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.

Weiterlesen

Die Herausforderung: Optimierung der Zusammenarbeit zwischen Open-Source-Mitwirkenden

Als eine unabhängige Organisation, die durch offene Entwicklung und Zusammenarbeit Innovationen fördert, unterstützt die .NET Foundation eine große und komplexe Reihe von Open-Source-Projekten, einschließlich .NET Core. Das Microsoft .NET Engineering Services-Team trägt zum Projekt bei und ist für einen Großteil der Infrastruktur verantwortlich, mit der Mitwirkende aus der ganzen Welt zusammenarbeiten können.

Mit Dutzenden verschiedener Git-Repositorys auf GitHub, einer breiten Palette von Tools und verschiedenen CI-Systemen (Continuous Integration), die im gesamten Projekt verwendet werden, gab es eine Menge Verwirrung, welche die Produktivität beeinträchtigte. Die schiere Skalierung des Projekts erhöhte die Komplexität zusätzlich. Beispielsweise führt dasRoslyn-Repository (C#-Compiler) allein mehr als 600 000 automatisierte Tests für eine Iteration einer Pull-Anforderung aus. Bei mehr als 50 Pull-Anforderungen pro Woche mit jeweils mehreren Iterationen beträgt die Anzahl der CI-Tests Milliarden. Für CoreFx (Bibliotheken) sind die Zahlen noch höher. Bei der Planung für das .NET Core 3.0-Release beschloss das .NET Engineering Services-Team große Änderungen vorzunehmen, um eine größere Konsistenz zu erzielen und Mitwirkenden zu ermöglichen, das volle Potenzial des Projekts zu nutzen.

"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

Um Entwicklern das Wechseln zwischen verschiedenen Teilen des Softwarestapels zu erleichtern, hat das .NET Engineering Services-Team daran gearbeitet, alle Repositorys unter eine gemeinsame Verzeichnisstruktur, einen Befehlssatz und eine Build- und Testlogik zu bringen. Das Team hat weitere Produktivitätsbarrieren beseitigt, indem alle vorhandenen Workflows aus den verschiedenen CI-Systemen in ein einziges System in Azure Pipelines verschoben wurden. Da das System vollständig verwaltet wird, müssen sie die CI-Serverinfrastruktur nicht mehr verwalten. Das Team verwendet jetzt die Konfiguration als Code über YAML-Dateien, die in GitHub gespeichert sind, und YAML-Pipelines werden überall verwendet. Während einige Repositorys CI seriell durchgeführt haben und Entwickler manchmal zwei oder drei Stunden zwischen Iterationen in ihrem Code warten mussten, werden alle CI-Pipelines jetzt parallelisiert, 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 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.

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

Weiterlesen
Können wir Ihnen helfen?