Пропустить навигацию

Команда, обслуживающая инфраструктуру .NET, инвестирует в согласованность, чтобы ускорить внедрение связанных с открытым кодом инноваций

Посмотрите, как общий инструментарий в единой общей системе непрерывной интеграции для всех репозиториев GitHub значительно повышает продуктивность разработчиков.

Прочесть статью полностью

Задача: оптимизация совместной работы для участников проектов с открытым кодом

Как независимая организация, созданная для внедрения инноваций с помощью открытой разработки и совместной работы, .NET Foundation поддерживает большой и комплексный набор проектов с открытым кодом, включая .NET Core. Команда служб инженерии Microsoft .NET вносит свой вклад в проект и отвечает за большую часть инфраструктуры, позволяющей участникам со всего мира работать вместе.

Из-за десятков разных GIT-репозиториев в GitHub, широкого набора инструментов и различных систем непрерывной интеграции (CI), используемых в рамках проекта, возникало много противоречий, препятствовавших росту производительности. На сложности проекта сказывался и его грандиозный масштаб. Например, один лишь репозиторий Roslyn (компилятора C#) выполняет более 600 000 автоматических тестов для одной итерации запроса на вытягивание. Когда число запросов превышает 50 в неделю, и каждый из них имеет несколько итераций, число CI-тестов превосходит отметку в миллиарды. Для CoreFx (библиотек) этот показатель еще выше. По мере подготовки к выпуску .NET Core 3.0 команда служб инженерии .NET решила внести значительные изменения, чтобы обеспечить стабильность и помочь участникам реализовать полный потенциал проекта.

"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?"

Мэтт Митчелл, главный инженер программного обеспечения .NET Engineering Services

Повышение продуктивности благодаря общему инструментарию и единой системе непрерывной интеграции

Чтобы разработчикам было проще перемещаться между различными частями стека программного обеспечения, команда служб инженерии .NET объединила все репозитории в общей структуре каталогов, наборе команд и логике сборки и тестирования. Команда устранила дальнейшие барьеры для производительности, переместив все существующие рабочие процессы из различных систем CI в единую систему в Azure Pipelines. Так как это полностью управляемая система, контролировать инфраструктуру сервера CI больше не требуется. Теперь команда практикует конфигурацию в виде кода посредством YAML-файлов, хранящихся на GitHub, а конвейеры YAML используются повсеместно. Если раньше некоторые репозитории проводили CI последовательно, заставляя разработчиков ждать два-три часа между разными итерациями кода, то теперь все конвейеры CI выполняются параллельно для более быстрых итераций.

"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."

Мэтт Митчелл, главный инженер программного обеспечения .NET Engineering Services

Чем лучше совместная работа, тем лучше продукт

Сегодня разработчикам намного проще переходить от одного репозитория к другому, выявлять первопричину ошибки, предлагать исправления и тестировать их. И для всего этого практически не нужны специализированные знания, которые требовались раньше. Упрощенная совместная работа с открытым кодом в GitHub позволяет разработчикам быстрее внедрять инновации, поскольку над написанием, тестированием, сборкой и доставкой программного обеспечения высокого качества они работают вместе. Так как команда .NET Engineering Services может вносить изменения в инфраструктуру по всему стеку, она может совершенствовать инструментарий, который разработчики могут использовать во всех репозиториях гораздо быстрее и эффективнее.

Давайте рассмотрим ближе путь команд и принятие решений.

Прочесть статью полностью