Команда, обслуживающая инфраструктуру .NET, инвестирует в согласованность, чтобы ускорить внедрение связанных с открытым кодом инноваций
Посмотрите, как общий инструментарий в единой общей системе непрерывной интеграции для всех репозиториев GitHub значительно повышает продуктивность разработчиков.
Задача: оптимизация совместной работы для участников проектов с открытым кодом
Как независимая организация, созданная для ускорения внедрения инноваций с помощью открытой разработки и совместной работы, .NET Foundation поддерживает большой и сложный набор проектов с открытым кодом, включая .NET Core. Команда Microsoft .NET Engineering Services участвует в проекте и отвечает за большую часть инфраструктуры, которая позволяет участникам со всего мира работать вместе.
Из-за десятков различных git-репозиториев на GitHub, широкого набора инструментов и нескольких различных систем непрерывной интеграции (CI), используемых в проекте, происходила путаница, мешавшая производительности. Большие масштабы проекта тоже способствовали сложности. Например, только репозиторий Roslyn (компилятор C#) выполняет более 600 000 автоматизированных тестов за одну итерацию запроса на вытягивание. Из-за того, что в неделю выполняется более 50 запросов на вытягивание, при этом каждый предполагает множество итераций, количество тестов непрерывной интеграции измеряется миллиардами. В случае CoreFx (библиотек) эта цифра больше. Так как команда .NET Engineering Services планировала выпуск .NET Core 3.0, она решила внести значительные изменения и добиться большей согласованности, чтобы дать участникам возможность реализовать весь потенциал проекта.
Задача: адаптация к облачной операционной модели
"Распределенная структура репозитория и инструментарий значительно усложняют для разработчиков переход от одного репозитория к другому. Если это сложно для разработчиков Майкрософт, как можно ожидать, что большинство отдельных участников разберутся с этим?"
Мэтт Митчелл, главный инженер программного обеспечения .NET Engineering Services
Повышение продуктивности благодаря общему инструментарию и единой системе непрерывной интеграции
Чтобы разработчикам было легче перемещаться между различными частями стека программного обеспечения, команда .NET Engineering Services старалась обеспечить для всех репозиториев общую структуру каталогов, один набор команд и единую логику сборки и тестирования. Команде удалось преодолеть и другие барьеры, снижающие продуктивность, переместив существующие рабочие процессы из различных систем непрерывной интеграции в единую систему Azure Pipelines. Так как эта система полностью управляемая, команда больше не несет ответственности за управление инфраструктурой сервера непрерывной интеграции. Сейчас команда практикует метод "конфигурация как код" с использованием файлов YAML, которые хранятся в GitHub, а конвейеры YAML применяются повсеместно. Ранее для некоторых репозиториев непрерывная интеграция была последовательной, и это иногда заставляло разработчиков ждать два или три часа между итерациями кода. Теперь все конвейеры непрерывной интеграции выполняются параллельно, обеспечивая более быстрые итерации.
Задача: адаптация к облачной операционной модели
"Теперь, когда нам больше не нужно беспокоиться о рабочих аспектах непрерывной интеграции, мы можем сосредоточиться на дальнейших улучшениях, которые понравятся всем, включая разработчиков Майкрософт и отдельных участников."
Мэтт Митчелл, главный инженер программного обеспечения .NET Engineering Services
Чем лучше совместная работа, тем лучше продукт
Сегодня разработчикам намного проще переходить от одного репозитория к другому, выявлять первопричину ошибки, предлагать исправления и тестировать их. И для всего этого практически не нужны специализированные знания, которые требовались раньше. Упрощенная совместная работа с открытым кодом в GitHub позволяет разработчикам быстрее внедрять инновации, поскольку над написанием, тестированием, сборкой и доставкой программного обеспечения высокого качества они работают вместе. Так как команда .NET Engineering Services может вносить изменения в инфраструктуру по всему стеку, она может совершенствовать инструментарий, который разработчики могут использовать во всех репозиториях гораздо быстрее и эффективнее.