Pomiń nawigację

Zespół ds. infrastruktury .NET inwestuje w spójność w celu przyspieszenia tempa wprowadzania innowacji w oprogramowaniu typu open-source

Obejrzyj, jak udostępnione narzędzia i pojedynczy współużytkowany system ciągłej integracji działający w repozytoriach GitHub mogą zwiększyć wydajność deweloperów.

Przeczytaj całą historię

Wyzwanie: Usprawnianie współpracy między współautorami oprogramowania typu open-source

Jako niezależna organizacja utworzona w celu wspierania innowacji poprzez otwarte programowanie i współpracę, organizacja .NET Foundation wspiera duży i złożony zestaw projektów typu open source, w tym .NET Core. Zespół usług inżynieryjnych platformy .NET w firmie Microsoft współtworzy projekt i jest odpowiedzialny za znaczną część infrastruktury, która umożliwia współpracę współautorom z całego świata.

Istnienie dziesiątek różnych repozytoriów Git w usłudze GitHub, szerokiego zakresu narzędzi i kilku różnych systemów ciągłej integracji (CI) używanych na przestrzeni całego projektu, powodowało wiele zamieszania, które hamowało produktywność. Dodatkowo sama skala projektu zwiększała jego złożoność. Na przykład sam kompilator repozytorium Roslyn (kompilator języka C#) uruchamia ponad 600 000 testów automatycznych dla jednej iteracji żądania ściągnięcia. W przypadku ponad 50 żądań ściągnięcia na tydzień, każde z wieloma iteracjami, liczba testów ciągłej integracji jest wyrażona w miliardach. W przypadku CoreFx (bibliotek) liczby są jeszcze wyższe. Ponieważ zespół usług inżynieryjnych platformy .NET zaplanował wydanie platformy .NET Core 3.0, zdecydowano się wprowadzić duże zmiany, aby zapewnić większą spójność i umożliwić współautorom pełne wykorzystanie potencjału projektu.

"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, główny inżynier ds. oprogramowania w usługach inżynieryjnych platformy .NET

Zwiększanie produktywności za pomocą współdzielonych narzędzi i pojedynczego systemu ciągłej integracji

Aby ułatwić deweloperom przechodzenie między różnymi częściami stosu oprogramowania, zespół usług inżynieryjnych platformy .NET pracował nad wprowadzeniem wszystkich repozytoriów do wspólnej struktury katalogów, zestawu poleceń oraz logiki kompilacji i testowania. Zespół wyeliminował dalsze bariery w produktywności, przenosząc wszystkie istniejące przepływy pracy z różnych systemów ciągłej integracji do jednego systemu w Azure Pipelines. Ponieważ system jest w pełni zarządzany, nie ma już potrzeby zarządzania infrastrukturą serwera ciągłej integracji. Zespół praktykuje teraz konfigurację jako kod za pośrednictwem plików YAML, przechowywanych w usłudze GitHub, a potoki YAML są używane wszędzie. Podczas gdy niektóre repozytoria wykonywały wcześniej ciągłą integrację szeregowo – wymagając od deweloperów oczekiwania czasami dwóch lub trzech godzin między iteracjami w kodzie – wszystkie potoki ciągłej integracji są teraz równoległe, aby umożliwić szybsze iteracje.

"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, główny inżynier ds. oprogramowania w usługach inżynieryjnych platformy .NET

Ściślejsza współpraca prowadzi do opracowania lepszego produktu

Obecnie deweloperzy mogą łatwiej przenosić się z między repozytoriami, śledzić główne przyczyny usterek oraz proponować i testować poprawki. Jednocześnie nie jest do tego wymagana głębsza wiedza specjalistyczna niż ta, jaka była wymagana wcześniej. Taka usprawniona współpraca w witrynie GitHub umożliwia deweloperom szybsze wprowadzanie innowacji, ponieważ pracują oni razem nad pisaniem, testowaniem, kompilowaniem i przesyłaniem wysokiej jakości oprogramowania. A ponieważ członkowie zespołu ds. usług inżynieryjnych platformy .NET mogą dokonywać zmian infrastruktury przy pełnym stosie, są oni w stanie o wiele szybciej i wydajniej dostarczać ulepszone narzędzia, z których mogą korzystać deweloperzy we wszystkich repozytoriach.

Poznaj bliżej drogę, jaką przeszły zespoły, a także stosowane przez nie procesy decyzyjne.

Przeczytaj całą historię