.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.
Utmaningen: Anpassa till en molndriftsmodell
"En distribuerad lagringsplatsstruktur och verktyg gör det mycket svårare för utvecklare att flytta från en lagringsplats till en annan… Om det är så här svårt för Microsoft-utvecklare, hur kan vi förvänta oss att de flesta enskilda deltagare kommer på det?"
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.
Utmaningen: Anpassa till en molndriftsmodell
"Nu när vi längre behöver oroa oss för de operativa aspekterna av CI kan vi fokusera på ytterligare förbättringar som kommer att märkas av alla, inklusive Microsoft-utvecklare och enskilda deltagare."
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.