Passer la navigation

L’équipe d’infrastructure .NET investit dans la cohérence pour accélérer l’innovation open source

Observez comment des outils partagés et un système CI unique et partagé dans les dépôts GitHub génèrent de gros gains de productivité pour les développeurs.

En savoir plus

Le défi : Rationaliser la collaboration pour les contributeurs open source

En tant qu’organisation indépendante créée pour favoriser l’innovation via le développement ouvert et la collaboration, .NET Foundation prend en charge un ensemble important et complexe de projets open source, notamment .NET Core. L’équipe Microsoft .NET Engineering Services contribue au projet et est responsable d’une grande partie de l’infrastructure qui permet aux contributeurs du monde entier de travailler ensemble.

Avec des dizaines de dépôts Git différents sur GitHub, une large gamme d’outils et plusieurs systèmes d’intégration continue (CI) différents utilisés dans le projet, une grande confusion a empêché la productivité. L’échelle du projet a ajouté à la complexité. Par exemple, le dépôt Roslyn (compilateur C#) exécute à lui seul plus de 600 000 tests automatisés pour une itération d’une requête de tirage. Avec plus de 50 demandes de tirage (pull requests) par semaine, chacune avec plusieurs itérations, le nombre de tests CI est exprimé en milliards. Pour CoreFx (bibliothèques), les nombres sont encore plus élevés. En tant qu’équipe des services d’ingénierie .NET prévue pour la version .NET Core 3.0, elle a décidé d’apporter d’importantes modifications pour établir une cohérence accrue et permettre aux contributeurs de réaliser le potentiel complet du projet.

"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 ingénieur logiciel, .NET Engineering Services

Amélioration de la productivité grâce à des outils partagés et à un seul système CI

Pour faciliter le déplacement des développeurs entre différentes parties de la pile logicielle, l’équipe des services d’ingénierie .NET a travaillé pour placer tous les référentiels sous une structure d’annuaire commune, un ensemble de commandes et une logique de génération et de test. L’équipe a éliminé d’autres obstacles à la productivité en déplaçant tous les flux de travail existants des différents systèmes d’intégration continue vers un seul système dans Azure Pipelines. Étant donné que le système est complètement managé, il ne dispose plus de la gestion de l’infrastructure du serveur CI. L’équipe effectue à présent la configuration en tant que code via des fichiers YAML stockés dans GitHub, et les pipelines YAML sont utilisés partout. Alors que certains dépôts avaient précédemment effectué des opérations d’intégration continue (ce qui exigeait que les développeurs attendent parfois deux ou trois heures entre les itérations sur leur code), tous les pipelines d’intégration continue sont désormais parallélisés pour permettre des itérations plus rapides.

"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 ingénieur logiciel, .NET Engineering Services

Une meilleure collaboration pour un meilleur produit

Aujourd’hui, les développeurs peuvent plus facilement passer d’un dépôt à l’autre, rechercher la cause première d’un bogue, et proposer et tester un correctif, le tout sans presque disposer des connaissances spécialisées dont ils avaient besoin par le passé. Cette collaboration open source rationalisée dans GitHub permet aux développeurs d’innover plus rapidement en travaillant ensemble pour écrire, tester, créer et livrer des logiciels de haute qualité. De plus, étant donné que l’équipe de services techniques .NET peut effectuer des modifications d’infrastructure sur l’ensemble de la pile, elle est en mesure d’apporter des améliorations d’outils dont les développeurs peuvent tirer parti beaucoup plus rapidement et efficacement dans tous les dépôts.

Examinez de plus près le parcours et le processus de prise de décision des équipes.

En savoir plus
Pouvons-nous vous aider ?