Как появились очереди на отправку и непрерывная сборка Джефф Карролло

Как появились очереди на отправку и непрерывная сборка

Джефф Карролло

Когда-то Google был маленьким. Тогда казалось, что провести юнит-тестирование перед коммитом изменений вполне достаточно. Но даже тогда случалось, что тесты не проходили, и люди тратили свое время на поиск и решение проблем.

Компания росла. Чтобы масштабироваться, наши разработчики писали и поддерживали качественные библиотеки и инфраструктуру, которые использовали все команды. Со временем росло количество, размеры и сложность базовых библиотек. Код проектов стал интенсивно использовать сторонние библиотеки и инфраструктуру, и одних юнит-тестов стало недостаточно — уже требовалось интеграционное тестирование. В какой-то момент стало понятно, что многие баги вызывались зависимостями между компонентами. Так как тесты не запускались до тех пор, пока кому-нибудь не вздумывалось закоммитить изменение в своем проекте, интеграционные баги могли оставаться незамеченными по несколько дней.

Потом мы пришли к панели мониторинга юнит-тестов. Система автоматически считала каждый каталог верхнего уровня в дереве кода компании «проектом». Плюс каждый мог определить свой «проект», в котором связывал сборки кода с тестами и назначал ответственного за сопровождение. Каждый день система прогоняла все тесты по всем проектам. Система записывала статистику прохождений каждого теста и показывала ее на главной панели. Если тесты падали, ответственные за их сопровождение получали письма каждый день, поэтому тесты оставались неисправными недолго. Тем не менее проблемы оставались.

Ежедневного прогона всех тестов оказалось недостаточно — команды хотели быстрее отлавливать разрушительные изменения. Некоторые команды начали писать скрипты непрерывной сборки, которые непрерывно делали сборку и выполняли юнит- и интеграционные тесты на отдельных машинах. Осознав, что эту систему можно сделать общей для всех команд, Крис Лопес и Джей Корбетт сели и написали «Систему непрерывной сборки Криса и Джея». Теперь любой проект мог развернуть свою систему непрерывной сборки. Достаточно было просто зарегистрировать машину, заполнить файл конфигурации и запустить скрипт.

Система быстро стала популярной, и вскоре большинство проектов в Google перешло на нее. Если тест не проходил, то программа оповещала всех ответственных за изменение по почте. О сбоях стали узнавать через несколько минут после коммита изменений в базу кода. Кроме того, система отмечала «Золотые списки изменений» — контрольные точки в системе контроля версий, в которых успешно проходили все тесты проекта. Теперь разработчики могли ориентироваться на стабильную версию исходников без недавних проблемных изменений. Это очень помогало при выборе стабильной сборки для выпуска.

Но и этого инструмента инженерам оказалось недостаточно. Команды становились больше, проекты — сложнее, потери от поломанных сборок росли. Разработчики строили новые очереди отправок, чтобы защитить системы непрерывной сборки. В ранних реализациях все списки изменений действительно вставали в очередь: система тестировала и одобряла или отклоняла списки последовательно. Если нужно было провести много продолжительных тестов подряд, то между постановкой списка изменений в очередь и его фактической передачей в систему контроля версий могло пройти несколько часов. В следующих версиях уже реализовали параллельное выполнение ожидающих списков изменений, но они запускались изолированно друг от друга. Хотя это могло создавать проблемы нарушения последовательности потоков, такие случаи были редки, их оперативно обнаруживала система непрерывной сборки. Возможность заливки кода через несколько минут после отправки запроса экономила много времени. Это компенсировало затраты на исправление редких падений системы непрерывной сборки.

Так большинство крупных проектов Google перешло на использование очередей на отправку. Во многих командах даже выделяли специального человека на роль «смотрителя сборки», задача которого заключалась в том, чтобы быстро реагировать на любые проблемы, выявленные очередью проверки или системой непрерывной сборки.

Эти две системы, панель мониторинга юнит-тестов и система непрерывной сборки Криса и Джея, использовались в Google несколько лет. Они принесли огромную пользу командам, были несложны в настройке и неприхотливы в сопровождении. И вот встал вопрос о реализации этих систем в виде общей инфраструктуры для всех команд. Так появилась система Test Automation Program (TAP). Когда мы писали эту книгу, TAP уже заменила собой обе первоначальные системы. Ее используют почти все проекты Google, кроме Chromium и Android. Только проекты с открытым кодом используют отдельные деревья исходного кода и серверные среды сборки.

Плюсы того, что большинство сотрудников используют один набор инструментов и единую инфраструктуру, трудно переоценить. Одной простой командой инженер может собрать и исполнить все бинарники и тесты, которые связаны с его списком изменений, получить данные о покрытии кода, сохранить и проанализировать результаты в облаке, а потом посмотреть их в виде отчета на постоянной веб-странице. Результат выводится в терминал в виде сообщения «PASS» или «FAIL» со ссылками на подробную информацию. Когда разработчик выполняет тесты, их результаты и данные о покрытии кода сохраняются в облаке, и любой рецензент может посмотреть их через внутренний инструмент для код-ревью.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Ответ на отправку POST

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Ответ на отправку POST В настоящий момент для отправки данных формы целевому файлу *.asp в вашем файле default.htm указан HTTP-метод GET. При использовании этого подхода значения, содержащиеся в элементах управления графического интерфейса, присоединяются в конец строки запроса.


(4.3) Пропали куда-то системные шрифты под W2k, или вообще, система начала вести себя как то странно, перестали работать некоторые программы, появились глюки, которых раньше точно не было. Как это можно исправить?

Из книги Win2K FAQ (v. 6.0) автора Шашков Алексей

(4.3) Пропали куда-то системные шрифты под W2k, или вообще, система начала вести себя как то странно, перестали работать некоторые программы, появились глюки, которых раньше точно не было. Как это можно исправить? В командной строке вводишь sfc.exe /scannow – проверить системные


4.3. Пропали куда-то системные шрифты под XP, или вообще, система начала вести себя как то странно, перестали работать некоторые программы, появились глюки, которых раньше точно не было. Как это можно исправить?

Из книги WinXP FAQ (Часто задаваемые вопросы по ОС Windows XP) автора Шашков Алексей

4.3. Пропали куда-то системные шрифты под XP, или вообще, система начала вести себя как то странно, перестали работать некоторые программы, появились глюки, которых раньше точно не было. Как это можно исправить? В командной строке вводишь sfc.exe /scannow - проверить системные файлы


Появились первые подробности о Windows 8 Михаил Карпов

Из книги Цифровой журнал «Компьютерра» № 23 [28.06.2010 — 04.07.2010] автора Журнал «Компьютерра»

Появились первые подробности о Windows 8 Михаил Карпов Опубликовано 30 июня 2010 года В интернете появились «утёкшие» слайды презентации, демонстрировавшейся во время обсуждения планов по созданию новой ОС Microsoft Windows 8. Конечно, стоит учитывать, что


В Facebook появились группы Михаил Карпов

Из книги Цифровой журнал «Компьютерра» № 37 [04.10.2010 — 10.10.2010] автора Журнал «Компьютерра»

В Facebook появились группы Михаил Карпов Опубликовано 08 октября 2010 года В социальной сети Facebook появилось интересное нововведение — группы. Не стоит путать их со списками друзей, которым виден постинг — это отдельная страница, закрытая от


У6.10 Очереди

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

У6.10 Очереди Описать в виде АТД очереди (первым пришел - первым ушел) в том же стиле, что и стеки. Обратите внимание на общие и отличительные черты этих АТД. (Указание: аксиомы для item и remove должны отличаться, при описании put (s,x) рассмотрите случаи, когда очередь s пуста и


На улицах Нью-Йорка появились солнечные станции для зарядки мобильников Николай Маслухин

Из книги Цифровой журнал «Компьютерра» № 178 автора Журнал «Компьютерра»

На улицах Нью-Йорка появились солнечные станции для зарядки мобильников Николай Маслухин Опубликовано 21 июня 2013 Нью-Йорк – это город, где бесплатный Wi-Fi есть практически повсюду, даже под землёй. Так что трудностей с выходом в интернет горожане не


В магазине Google Play появились смартфоны Samsung Galaxy S4 и HTC One в версии Google Edition Николай Маслухин

Из книги Цифровой журнал «Компьютерра» № 179 автора Журнал «Компьютерра»

В магазине Google Play появились смартфоны Samsung Galaxy S4 и HTC One в версии Google Edition Николай Маслухин Опубликовано 27 июня 2013 Сегодня ночью в американском Google Play стали доступны два наиболее интересных и мощных Android-cмартфона: HTC One и Samsung Galaxy S4. Оба телефона лишись


Джефф Безос покупает The Washington Post: рождение химеры, змия-искусителя или нового бога? Сергей Голубицкий

Из книги Цифровой журнал «Компьютерра» № 184 автора Журнал «Компьютерра»

Джефф Безос покупает The Washington Post: рождение химеры, змия-искусителя или нового бога? Сергей Голубицкий Опубликовано 07 августа 2013 Довольно скромную по резонансу текущую новость телетайпной ленты IT — анонс 5 августа покупки одной из старейших


Джефф Безос покупает The Washington Post: рождение химеры, змия-искусителя или нового бога? Сергей Голубицкий

Из книги Цифровой журнал «Компьютерра» № 185 автора Журнал «Компьютерра»

Джефф Безос покупает The Washington Post: рождение химеры, змия-искусителя или нового бога? Сергей Голубицкий Опубликовано 07 августа 2013 Довольно скромную по резонансу текущую новость телетайпной ленты IT — анонс 5 августа покупки одной из старейших


Непрерывная нормированная шкала

Из книги Графология XXI века автора Щеголев Илья Владимирович

Непрерывная нормированная шкала Фактор присутствия признака почерка измеряется непрерывной функцией, принимающей значения от 0 до 1. При этом значение 0 естественно соответствует абсолютному отсутствию признака, а значение 1 – явному и бесспорному его присутствию.


Непрерывная интеграция

Из книги Идеальный программист. Как стать профессионалом разработки ПО автора Мартин Роберт С.

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


Непрерывная сборка

Из книги автора

Непрерывная сборка В последнее время для обеспечения непрерывной сборки я использую Jenkins. Система нетребовательна, проста, а работа с ней не требует длительной подготовки. Вы загружаете программу, запускаете ее, проводите несложную настройку конфигурации – а дальше все