.NET infrastrukturteam investerer i konsistens for å akselerere innovasjon med åpen kildekode

Se hvordan delt verktøy og et enkelt, delt CI-system på tvers av GitHub-lagringene gir store gevinster i utviklerproduktivitet.

Utfordringen: Effektivisere samarbeid for åpen kildekode-bidragsytere

Som en uavhengig organisasjon som er opprettet for å fremme innovasjon gjennom åpen utvikling og samarbeid, støtter .NET Foundation et stort og komplekst sett med åpen kildekode-prosjekter, inkludert .NET Core. Microsoft .NET Engineering Services-teamet bidrar til prosjektet og er ansvarlig for mye av infrastrukturen som gjør at bidragsytere fra hele verden kan samarbeide.

Med dusinvis av forskjellige git-repositoriumer på GitHub, et bredt spekter av verktøy og flere forskjellige kontinuerlige integrasjonssystemer (CI) som ble brukt i hele prosjektet, var det mye forvirring som hemmet produktiviteten. Prosjektets enorme skala ble komplisert. For eksempel kjører repositoriumet Roslyn (C #-kompilator) mer enn 600 000 automatiserte tester for en iterasjon av en trekkforespørsel. Med mer enn 50 trekkforespørsler per uke, hver med flere iterasjoner, er det milliarder av CI-tester. For CoreFx (libraries), er tallene enda høyere. Som .NET Engineering Services-teamet planla for .NET Core 3.0-utgivelsen, bestemte de seg for å gjøre store endringer for å etablere større konsistens og gjøre det mulig for bidragsytere å realisere hele potensialet i prosjektet.

"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 av produktiviteten gjennom delt verktøy og et enkelt CI-system

For å gjøre det lettere for utviklere å bevege seg mellom forskjellige deler av programvarestabelen, jobbet .NET Engineering Services-teamet for å bringe alle repositoriumer under en felles katalogstruktur, et felles sett med kommandoer og en felles bygg-og-test-logikk. Teamet eliminerte ytterligere hindringer for produktivitet ved å flytte alle eksisterende arbeidsflyter fra de forskjellige CI-systemene til et enkelt system i Azure Pipelines. Fordi systemet er fullstendig administrert, har de ikke lenger belastningen med å administrere CI-serverinfrastrukturen. Teamet praktiserer nå konfigurasjon som kode gjennom YAML-filer som er lagret i GitHub, og YAML-datasamlebånd brukes overalt. Mens noen repositoriumer tidligere hadde gjort CI serielt – noe som krever at utviklere noen ganger må vente to eller tre timer mellom iterasjoner på koden sin, er alle CI-datasamlebåndene nå parallellisert for å muliggjøre raskere iterasjoner.

"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 samarbeid gir et bedre produkt

I dag kan utviklere lettere gå fra repo til repo, spore opp årsaken til en bug og foreslå og teste en løsning – alt uten å måtte ha så mye spesialkunnskap som de trengte tidligere. Dette effektiviserte åpen kildekode-samarbeidet i GitHub gjør det mulig for utviklere å innovere raskere når de jobber sammen for å skrive, teste, bygge og sende programvare av høy kvalitet. Og siden .NET Engineering Services-teamet kan gjøre infrastrukturendringer over hele stakken, kan de raskere og mer effektivt levere verktøyutbedringer som utviklere kan dra nytte av på tvers av alle repositorium.

Se nærmere på teamenes reise og beslutninger.

Les hele historien