Хотелось бы понять стоит ли хорошо разбираться с какой-то готовой continious integraion системой вроде jenkins или уже дописывать свои скрипты на питоне до того, что нужно.
Имеется проект на C++, сборка осуществляется через CMake с оберткой в виде скрипта на питоне. В проекте есть несколько наборов тестов: от самых простых unit тестов (где тест либо пройден, либо завален), до тестов на разные функциональности (где все сложно и во время тестирования собирается множество индикаторов и по ним генерируются отчеты).
Вот минимум, который хотелось бы иметь в готовой continious integraion:
- сборка и запуск тестов на каждой ревизии (кроме тех, комментарии к которым отмечены специальным тэгом);
- работа с репозиторием через polling, а не hook, т.к. сервера для VCS и CI разные и под разными платформами;
- сбор и хранение custom indicators, а не только succeed/failed для unit тестов;
- построение custom отчетов по custom индикаторам;
Сейчас тестирование организованно на python скриптах, фактически есть один nightly запуск, когда обновляется working copy, осуществляется сборка, запуск тестов и сбор индикаторов в sqlite базу данных, по базе данных строятся отчеты (об изменениях в индикаторах) и рассылаются письма.
Для каждого теста на функциональность собирается несколько индикаторов: время работы определенных ветвей в коде и всего в целом, разные оценки качества решения (в плане лучше или хуже и на сколько). Нельзя однозначно как для unit тестов сказать что тест пройден или завален, часто нужно человеку (эксперту) оценивать это, поэтому собираются некоторые индикаторы решения в тесте, и за ними нужно постоянно следить.
Какие готовые continious integration системы позволят (возможно, через написание плагинов к ним) интегрировать в себя такие custom индикаторы и отчеты?
Имеющаяся система тестирования на python скриптах в основном устраивает, но нужно добавить в нее запуск на каждый новый коммит и почти сразу после появления этого коммита в репозитории. Стоит ли вообще рассматривать переход на готовые CI системы или проще будет добавить необходимое в имеющуюся систему?