Gå til hovedindhold

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.

Læs hele historien

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

Som en uafhængig organisation, der er oprettet for at fremme innovation gennem åben udvikling og samarbejde, understøtter .NET Foundation et stort og komplekst sæt 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 gør det muligt for bidragsydere fra hele verden at arbejde sammen.

Med masser af forskellige git-lagre på GitHub, en lang række værktøjer og flere forskellige CI-systemer, der bruges på tværs af projektet, var der en masse forvirring, der forhindrede produktiviteten. Selve projektets omfang bidrog til kompleksiteten. F.eks. kører Roslyn (C#-compiler) repo'en alene mere end 600.000 automatiserede tests for én iteration af en pull-anmodning. Med mere end 50 pull-anmodninger om ugen, hver med flere iterationer, er antallet af CI-tests i milliarder. For CoreFx (biblioteker) er tallene endnu højere. Da .NET Engineering Services-teamet planlagde udgivelsen af .NET Core 3.0, besluttede de at foretage store ændringer for at skabe større konsekvens og give bidragsyderne mulighed for at udnytte projektets fulde potentiale.

"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 bringe alle lagre under en fælles mappestruktur, et sæt kommandoer og build-and-test-logik. Teamet eliminerede yderligere produktivitetsbarrierer ved at flytte alle eksisterende arbejdsprocesser fra de forskellige CI-systemer til et enkelt system i Azure Pipelines. Fordi systemet er fuldt administreret, har de ikke længere byrden med at administrere CI-serverinfrastrukturen. Teamet praktiserer nu konfiguration som kode via YAML-filer, der er gemt i GitHub, og YAML-pipelines bruges overalt. Hvor nogle repos tidligere havde udført CI serielt - hvilket krævede, at udviklerne nogle gange måtte vente to eller tre timer mellem iterationer af deres kode - er alle CI-pipelines nu paralleliseret for at muliggøre hurtigere iterationer.

"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
Kan vi hjælpe dig?