.NET-infrastrukturteam investerar i konsekvens för att påskynda innovation inom öppen källkod

Se hur gemensamma verktyg och ett enhetligt, delat CI-system mellan GitHub-lagringsplatser ger imponerande resultat för utvecklarnas produktivitet.

Utmaningen: Effektivisera samarbete för deltagare med öppen källkod

Som en oberoende organisation som skapades för att främja innovation genom öppen utveckling och samarbete stöder .NET Foundation en stor och komplex uppsättning projekt med öppen källkod, däribland .NET Core. Microsoft .NET Engineering Services-teamet bidrar till projektet och ansvarar för mycket av den infrastruktur som gör att deltagare världen över kan arbeta tillsammans.

Dussintals olika Git-lagringsplatser på GitHub, ett brett utbud med verktyg och flera olika CI-system (kontinuerlig integrering) som användes i projektet skapade förvirring som sänkte produktiviteten. Projektets omfattande skala gjorde komplexiteten ännu större. Till exempel kör bara lagringsplatsen Roslyn (C#-kompilator) fler än 600 000 automatiserade tester för en iteration av en pull-begäran. Eftersom fler än 50 pull-begäranden äger rum varje vecka, och var och en har flera iterationer, resulterar det i miljardtals CI-tester. För CoreFx (bibliotek) är dessa siffror ännu högre. När .NET Engineering Services-teamet planerade för .NET Core 3.0-lanseringen valde de att göra stora ändringar som skapade mer konsekvens och gjorde att deltagarna kunde nå projektets fullständiga potential.

"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 för .NET Engineering Services

Förbättra produktiviteten med gemensamma verktyg och ett enskilt CI-system

I syfte att göra utvecklarnas flytt mellan olika delar av programvarustacken enklare arbetade .NET Engineering Services-teamet med att föra samman alla lagringsplatser i en gemensam katalogstruktur med en gemensam kommandouppsättning och logik för kompilering och testning. Teamet eliminerade ytterligare produktivitetshinder genom att flytta alla befintliga arbetsflöden från de olika CI-systemet till ett enda system i Azure Pipelines. Eftersom systemet hanteras fullständigt behöver de inte längre hantera CI-serverinfrastrukturen. Teamet övar nu på konfiguration som kod via YAML-filer som lagras på GitHub, och YAML-pipelines används överallt. Medan vissa lagringsplatser tidigare utförde CI seriellt – vilket krävde att utvecklare ibland väntade två eller tre timmar mellan iterationer av koden – är alla CI-pipelines nu parallelliserade så att iterationerna blir snabbare.

"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 för .NET Engineering Services

Bättre samarbete leder till en bättre produkt

I dag är det enklare för utvecklare att flytta från lagringsplats till lagringsplats, hitta rotorsaken till en bugg samt föreslå och testa en korrigering – allt detta utan de specialkunskaper som krävdes förr. Detta effektiva samarbete med öppen källkod i GitHub gör att utvecklare kan innovera snabbare när de tillsammans arbetar med att skriva, testa, kompilera och leverera högkvalitativ programvara. Eftersom .NET Engineering Services-teamet kan införa ändringar av infrastrukturen i den fullständiga stacken kan de nu förbättra verktyg som utvecklare använder i alla lagringsplatser mycket snabbare och effektivare.

Ta en närmare titt på teamens resa och beslutsfattande.

Läs hela artikeln