Наша команда разработки выкатывает изменения по несколько раз в неделю, но тесты до сих пор запускаются вручную и только когда кто-то вспомнит. Из-за этого сломанный код иногда доезжает до тестового стенда, а однажды попал и в продакшен. Нам нужно непрерывное тестирование, встроенное в конвейер сборки: каждый коммит должен автоматически запускать набор тестов, а неудачный прогон — блокировать выкат, пока он не наделал бед.
Цель — этап конвейера, который на каждый push и запрос на слияние прогоняет модульные, интеграционные и часть сквозных тестов. Он должен выдавать понятный отчёт: что прошло, что упало и почему, публиковать этот отчёт там, где его видит команда, и помечать сборку красной, чтобы сломанное изменение нельзя было слить или развернуть. Ещё хотим, чтобы нестабильные тесты отмечались, а не молча перезапускались до бесконечности, и чтобы общее время прогона держалось в разумных пределах за счёт параллельности и кэширования.
Мы используем распространённый Git-хостинг и стандартный CI-раннер; расскажите, с какими инструментами вам удобно работать и как вы выстроите этапы. Документация и короткая передача знаний нашим инженерам входят в задачу.
Что должна давать готовая настройка: — автозапуск тестов на каждый коммит и запрос на слияние; — читаемые отчёты об успехах и провалах с логами; — блокировка выката при падении тестов; — быстрая обратная связь за счёт параллельных задач и кэша.