Наша команда розробки викочує зміни по кілька разів на тиждень, але тести досі запускаються вручну й лише коли хтось згадає. Через це зламаний код інколи доїжджає до тестового стенду, а одного разу потрапив і в продакшен. Нам потрібне неперервне тестування, вбудоване в конвеєр збірки: кожен коміт має автоматично запускати набір тестів, а невдалий прогін — блокувати викат, поки він не наробив лиха.
Мета — етап конвеєра, який на кожен push і запит на злиття проганяє модульні, інтеграційні та частину наскрізних тестів. Він має видавати зрозумілий звіт: що пройшло, що впало й чому, публікувати цей звіт там, де його бачить команда, і позначати збірку червоною, щоб зламану зміну не можна було злити чи розгорнути. Ще хочемо, щоб нестабільні тести позначалися, а не мовчки перезапускалися до безкінечності, і щоб загальний час прогону тримався в розумних межах завдяки паралельності та кешуванню.
Ми використовуємо поширений Git-хостинг і стандартний CI-раннер; розкажіть, з якими інструментами вам зручно працювати і як ви вибудуєте етапи. Документація та коротка передача знань нашим інженерам входять до завдання.
Що має давати готове налаштування: — автозапуск тестів на кожен коміт і запит на злиття; — читабельні звіти про успіхи та провали з логами; — блокування викату за падіння тестів; — швидкий зворотний зв'язок завдяки паралельним задачам і кешу.