Денис Трифонов
Инженер по качеству в команде Continuous Delivery
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.
не решит всех проблем разработки, но позволит выявлять баги на этапе программирования фичи
github.com/brianium/paratest
Поддержка параллельного выполнения тестов на PHPUnit
$ paratest -p 16 --phpunit ./phpunit \
-c ./phpunit.xml ./tests
Итого: 1500 тестов
Если не было изменений в окружении, то достаточно обновить только приложения
У нас есть автоматизированная сборка, но после нее приходится самому писать в JIRA о смене статуса фичи
github.com/chobie/jira-api-restclient
API-клиент для JIRA на PHP
$client->addComment($jiraIssue, $jiraComment);
$client->editIssue($jiraIssue, [
'fields' => ['labels' => $labels]
]);
Feature Branch -> Deploy -> Priority Tests
-> Merge to Master -> Mark Issue in JIRA
Разработчик спустя три минуты после готовности фичи может слить ее в мастер
Мы все также неуверенны в мастере
Master Branch -> Deploy -> Full Tests
Master Branch -> RC -> Deploy -> Full Tests
-> Merge to Stable -> Mark Issues in JIRA
Мастер становится стабильным спустя половину дня вместо пяти
Упала миграция на бою, хотя регрессия прошла успешно
Перед регрессией нужно полностью восстанавливать исходное состояние окружения
... -> Revert VM -> Deploy -> ... -> Update Snapshot
Во время регрессии деплоим так же, как на бою
Вышел новый сотрудник, начал настраивать рабочее окружение и вылетели ошибки во время разворачивания API
VM Up -> Deploy -> Import Data -> Tests -> VM Destroy
Мы уверены, что в любое время можем развернуть API без ошибок
Выявляем баги не при подготовке релиза, а по мере готовности фич. Сборки падают, а значит выполняют свои задачи.
Continuous Integration помогает выявлять баги на этапе программирования фичи