Денис Трифонов
Инженер по качеству в команде Continuous Delivery
не решит всех проблем разработки, но позволит выявлять баги на этапе программирования фичи
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 помогает выявлять баги на этапе программирования фичи