Конфигуратор для Sismo

Описание

Sismo - это небольшой проект для CI (Continuous Integration). Делает необходимый минимум: получить код, запустить тесты, выдать результат. Официально преостановлена разработка и отказ от всевозможных плюшек с целью сохранения простоты проекта. Возможно, чтобы не создавать конкуренцию. Более того, если верить истории проекта, ранше там было уведомление в PR на гитхабе, затем удалено. Сейчас остались всякие "забавные" нотификаторы на андроид, макось, линукс, виндоус и т.д.

Аналоги

travis-ci - mainstream в CI решений. Имеет достаточное количество плюшек, работает со многими языками, интегрируется с гитхабом и PR. Но он достаточно дорог для приватных репозиториев.

jenkins-ci и некоторые другие, являются монстрами CI. Тут речь уже идет о целой настройке сервиса, подключения IT отдела. Вы уже "пляшите" под чужую дудку и интеграция не ограничвается 5 строчками в настройке проекта. Предоставляемых возможностей много, но для большинсвта проектов это излишне.

Целевая аудитория

Небольшие компании, проекты, в которых нет возможнсти оплачивать travis и нет нужды в разворачивании более мощных средств.

Локальная разработка в крупных проектах, использующих даже travis-ci. Прелесть Sismo в том, что его очень просто развернуть локально, это позволяет упростить локальный процесс разработки. Вы всегда можете иметь автоматическую проверку без отправки PR.

Поэтому к потенциальным клиентам можно отнести и индивидуальных разработчиков, стартапы и фрилансеров.

Задачи

Самый главный недостаток Sismo, что он конфигурируется только с помощью создания config.php.

Во-первых, это накладывает большие ограничения на распространение конфигурации. Вы не можете хранить в своем проекте столь странный конфиг. Даже если вы и закомитете эти настройки, скорее всего им нельзя будет воспользоваться остальным разработчикам. Из этого вытекает проблема поддержки CI. У вас немного изменились правила деплоя проекта, или хотите добавить тест свой. Вы вынуждены постоянно помнить и следить за config.php на сервере и вовремя исправлять его.

Во-вторых, config.php един для всех проектов. Если у вас развернут sismo на сервере, а отдел разрабатывает несколько проектов, что делать? Разворачивать каждому проекту свой sismo? Звучит не очень разумно.

Поэтому очень хочется иметь настройки в файле аналогичном .travis.yml, например, .sismo.yml. Мы можем сделать форк проекта, но этим самым потеряем потенциальных пользователей своей системы.

Есть идея, на мой взгляд гениальная, создать генератор config.php на основе .sismo.yml. Это будет такой же небольшой проект, который упростит работу с Sismo, расширит его возможности, не затронув его самого.

Подводные камни
  1. Как считать YAML файл?
  2. Как сгенерировать php файл?
  3. Как не запутаться в разных блоках настройках при генерации?
  4. А если несколько проектов или настроек, как быть с генерацией и не сойти с ума?
  5. Из чего вообще состоит проект, из каких частей, как отделить котлеты и сосисек?
Дополнительные задачи

Можно задуматься о дальнейшем развитии направления.

  1. Сбор и представления той или иной статистики во вне, нативная интеграция с разными сервисами
  2. Работа с гитом через wrapper
  3. Работа с сервисами (bitbucket/github), абстракция от них.

Эти направления представляют может больше академического интереса.