Teamet for .NET-infrastruktur investerer i ensartethed for at sætte fart på nyskabelser med åben kildekode

Se, hvordan deling af værktøjer og et enkelt, delt CI-system på tværs af GitHub-lagre sikrer store gevinster for udviklerproduktiviteten.

Udfordringen: At strømline samarbejdet mellem bidragydere til åben kildekode

Som en uafhængig organisation, der blev skabt for at frembring nyskabelser via åben udvikling og samarbejde, støtter .NET Foundation et stort og komplekst sæt af projekter med åben kildekode, herunder .NET Core. Microsoft .NET Engineering Services-teamet bidrager til projektet og er ansvarlig for en stor del af infrastrukturen, der giver bidragydere fra hele verden mulighed for at samarbejde.

Med brug af masser af forskellige git-lagre på GitHub, et bredt udvalg af værktøjer og adskillige forskellige CI-systemer (Continuous Integration) på tværs af projektet var der megen forvirring, som hæmmede produktiviteten. Alene størrelsen af projektet gjorde det mere komplekst. Roslyn-lageret (C#-compiler) alene kører mere end 600.000 automatiserede test for én gentagelse af en pullanmodning. Med mere end 50 pullanmodninger pr. uge, som hver har flere gentagelser, ligger antallet af CI-test i en størrelsesorden af milliarder. For CoreFx (biblioteker) er antallet endnu højere. Da .NET Engineering Services-teamet planlagde udgivelsen af .NET Core 3.0, besluttede de sig for at foretage store ændringer for at sikre større ensartethed og give bidragyderne mulighed for at realisere det fulde potentiale af projektet.

"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 Engineering Services

Forbedring af produktiviteten via delte værktøjer og et enkelt CI-system

For at gøre det nemmere for udviklere at flytte mellem forskellige dele af softwarestakken arbejdede .NET Engineering Services-teamet på at få alle lagre under én fælles mappestruktur , et sæt kommandoer og logik for skabelse og test. Teamet fjernede yderligere barrierer for produktivitet ved at flytte alle eksisterende arbejdsprocesser fra de forskellige CI-systemer til et enkelt system i Azure Pipelines. Da systemet er fuldt administreret, skal de ikke længere bekymre sig om at administrere CI-serverinfrastrukturen. Teamet udøver nu konfiguration af kode via YAML-filer, der er gemt i GitHub, og YAML-pipelines bruges overalt. Hvor nogle lagre tidligere havde gjort CI seriel, hvilket krævede, at udviklere nogle gange skulle vente to eller tre timer mellem gentagelser af deres kode, er alle CI-pipelines nu paralleliseret for at sikre hurtigere gentagelser.

"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 Engineering Services

Bedre samarbejde giver et bedre produkt

I dag kan udviklere nemmere gå fra lager til lager, finde rodårsagen til en fejl samt foreslå og teste en rettelse – alt sammen uden nær så meget specialiseret viden, som de havde brug for tidligere. Dette strømlinede samarbejde med åben kildekode i GitHub giver udviklere mulighed for at være mere innovative hurtigere, i takt med at de arbejder sammen om at skrive, teste, skabe og udgiv software af høj kvalitet. Og fordi .NET Engineering Services-teamet kan foretage ændringer af infrastrukturen på tværs af hele stakken, kan de levere forbedringer af værktøjer, som udviklere kan drage fordel af hurtigere og mere effektivt på tværs af alle lagre.

Se nærmere på teamenes rejse og beslutningstagning.

Læs hele historien