Компания Yahoo открыла код сборочной платформы Screwdriver
Компания Yahoo объявила об открытии исходных текстов проекта Screwdriver, в рамках которого развивается сборочная платформа с реализацией концепции непрерывной доставки (Continuous delivery - CD). Платформа предоставляет средства для создания приложений в рамках сокращённого цикла разработки с постоянно стабилизированной кодовой базой, готовой к релизу в любой момент времени. Код платформы написан на JavaScript (отдельные компоненты на Go) и распространяется под лицензией BSD.
Screwdriver позволяет организовать непрерывный выпуск обновлений продукта, гарантируюя сохранение стабильности после внесения каждого изменения. Частые релизы дают возможность разработчикам более оперативно реагировать на потребности пользователей и сохранять постоянно высокий уровень качества продукта. Из особенностей Screwdriver отмечается упрощение цикла подготовки продукта к распространению (все действия по созданию продукта после внесения изменений автоматизированы), оптимизация для поддержания разработки trunk-ветки и возможность простого отката изменений.
При разработке с использованием Screwdriver, изменения оформляются в виде Pull-запросов, которые перед включением к репозиторий проходят рецензирование, тестирование и проверку сборкой. Платформа Screwdriver развивается уже более 5 лет и изначально создавалась как надстройка над системой непрерывной интеграции Jenkins, но впоследствии трансформировалась в обособленный продукт. В Yahoo платформа Screwdriver обеспечивает более 25 тысяч сборок в день в ответ на более 12 тысяч ежедневных коммитов в git-репозиториях Yahoo.
Из ключевых компонентов Screwdriver отмечаются фронтэнд для организации взаимодействия с пользователем, API для оркестровки операций сборки и движки для организации сборки кодовой базы и запуска тестов в изолированных контейнерах или виртуальных машинах, для формирования которых могут использоваться различные инструментарии (Docker Swarm, Kubernetes и т.п.).
В ближайшие месяцы дополнительно планируется открыть ряд надстроек, используемых во внутренних проектах Yahoo, таких как механизм сохранения структурированных сборочных данных для дальнейшего использования, встроенные средства накопления метрик, шаблоны для быстрого развёртывания и компоненты для анализа сборочных логов.