Егор Бугаенко продолжает делиться своими знаниями не только в технической части, но и в сопутствующих успешным IT проектам областях.
Существует ряд компонентов, которыми должен обладать, качественная непрерывная интеграция.
- Исходный код (Source Code). Здесь вы просто пишете исходный код на своих компьютерах и, возможно, где-то на сервере. Лучшее, что вы можете сделать здесь, это построить его вручную, скажем, каждый день. Это непрерывная интеграция? Ну, в какой-то мере, если вы не забудете регулярно компилировать и упаковывать все.
- Автоматизированная сборка (Automated Build). На этом уровне ваша сборка автоматизирована, что означает, что вы можете скомпилировать, протестировать и упаковать весь продукт с помощью одной команды в командной строке. Вы должны иметь возможность нажать одну кнопку и получить либо ошибку, либо успешную сборку.
- VCS (Version Control System). На этом уровне вы сохраняете исходный код в Git. Должна быть возможность мгновенно развернуть систему на новом компьютере из репозитория.
- Pull Requests. Каждое изменение в исходном коде должно быть отправлено с помощью запроса pull в репозиторий на GitHub (т.е. речь о дисциплине постоянных малых изменений). Опять же, никто не должен иметь возможности совершать что-либо непосредственно с главной веткой, кроме как через запросы forks и pull.
- Code review. Каждый запрос должен пройти обязательный просмотр до внесение кода в ветку. У вас должна быть своя политика проверки кода, которая объясняет, кто делает обзоры, что происходит, если автор не согласен с рецензентом и т.д. Но запрос на вытягивание может быть объединен, если он не был рассмотрен.
- Тесты (tests). На этом уровне ваш код покрывается модульными (unit) тестами (и интеграционными тестами), и каждое изменение приходит с новым тестом. Ваша автоматическая сборка запускает все тесты вместе и завершается ошибкой, если какой-либо из них не выполняется.
- Статический анализ (Static Analysis). Проверка качества кода без его запуска - вот что такое статический анализ. На этом уровне качество вашего кода проверяется автоматизированной сборкой. Если качество ниже порогового значения, сборка завершается с ошибкой.
- Предполетные сборки (Pre-Flight Builds). Эта идея объясняется в статье Егора: Смерть непрерывной интеграции (Continuous Integration is Dead).
- Моделирование производства (Production Simulation). Сборка выполняется в контейнере, который имитирует производственную среду и данные.
- Стресс-тесты (Stress tests). Тесты производительности и стресса автоматизированы и выполняются на каждой сборке.
Комментариев нет:
Отправить комментарий