Система сборки Ya Make
Язык буткемпа: C++
Мы создаём собственную систему сборки для монорепозитория Яндекса — Ya make. Она работает как локально на Linux, macOS и Windows, так и на кластере распределённой сборки, обеспечивая перестроение локальных изменений за секунды и всего репозитория под несколько платформ за десятки минут.
Кроме непосредственно сборки и тестирования, она также предоставляет команды для пакетирования, экспорта проектов для нескольких IDE и средства анализа зависимостей.
В команде в основном используется C++, но немного кода есть и на Python.
Более детально мы рассказывали о нашей системе сборки на митапе DevTools Party / 21 марта 2023.
Стек
C++ | Основной язык программирования с использованием актуальной версии стандарта |
---|---|
Python 3 | Интеграционные тесты и язык для написания расширений |
ANTLR | Описание синтаксиса внутренних DSL |
Команда
У нас распределённая команда, состоящая из четырёх разработчиков и одного тимлида.
Работа в команде требует глубокого погружения в проблематику сборочных систем вообще и нашей в частности. Поэтому команда состоит из очень сильных разработчиков, готовых помогать и учить.
А ещё мы умеем работать комфортно в распределённой команде, не устраивая много встреч каждый день.
Особенности
- Результатами нашего труда ежедневно пользуются тысячи разработчиков Яндекса. Поэтому мы можем сделать их работу проще, комфортнее и эффективнее.
- Умение придумывать структуры данных и алгоритмы — это то, что у нас точно пригодится.
- Наши задачи чаще про более глубокое понимание и анализ, чем про быстрое написание кода.
- В команде открытая атмосфера, а это значит, что если вы захотите проявить инициативу, что-то предложить или обсудить, то все будут готовы к конструктивному диалогу.
Что нужно принять во внимание
- Как и у многих других инфраструктурных команд, у нас есть дежурства. Мы сами следим за работоспособностью продукта, а также отвечаем на запросы пользователей во внутренней поддержке. Дежурство проходит в рамках рабочего дня. Ночью и по выходным не дежурим, только если ситуация не форс-мажорная. Новых сотрудников на дежурство не отправляем. У вас будет время спокойно освоиться и накопить достаточную экспертизу.
- У нашего проекта давняя история, поэтому есть legacy, но мы не забываем про рефакторинг и регулярно им занимаемся.
- У нас кросс-платформенная разработка, поэтому нужно понимать, как всё будет работать на разных системах.
- Хоть ядро и написано на С++, часть кода на Python. Тем не менее, Python не является обязательным требованием, но будет являться большим преимуществом. Мы рассматриваем людей, которые хотя бы имеют желание доучить Python, и мы готовы с этим помогать.
Вызовы
- В монорепозитории Яндекса постоянно растёт количество проектов, кода, зависимостей, а это значит, что нам нужно постоянно работать над оптимизацией производительности нашей сборочной системы.
- Мы постоянно работаем над системой сборки как над продуктом. Поэтому нам нужно улучшать не только производительности, но и usability.
Дополнительные материалы
Доклад на DevTools Party «Сборка и тестирование в монорепозитории: система сборки ya make»: