Я давно пользуюсь соц. сетью для программистов github. Для него существует множество сервисов которые дополняют статическую информацию о проекте динамической статистикой. Которая автоматически собирается и выводит полезную информацию для разработчика и для людей которые планируют использовать код из этого репозитория.

Для локальных pet проектов которые не хочется публиковать в os тоже было бы не плохо иметь подобный спектор услуг. Предупреждаю сразу, все ниже изложенное будет иметь отношение к проектам написанным на ЯП PHP и сопутствующим технологиям, но возможно применимо и к другим конфигурациям.

Комплекс должен будет собирать инфорацию о проектке и на главной странице проекта выводить необходимую информацию. Генерировать обновление статистики для комита и для каждого MR/PR(merge/pull request). Для MR статистика выводится в разделе комментарии. Перечень сторонних обработчиков:

  • Прогон тестов после каждого камита в активную ветку или при PR(pull request). Популярный и бесплатный для Open Source это Travis CI, позволяет запускать код в разном окружении, собирать отчеты для других инструментов. (локальный аналог Jenkins, gitlab ci);
  • Статический анализ кода по покрытию тестами кода. Я использовал CodeClimate, он понимает отчеты от PHPUnit иведет статистику по развитию проекта, но недавно узнал о SonarQube и решил остановиться на нем;
  • Сложность кода, которая тоже собирается при помощи статических анализаторов. С генерацией GUI для оценки текущего остояния можно использовать PhpMetrics. Для истории буду использовать тот же SonarQube;
  • Copy/Paste анализ кода на дублирование кода с отображением подозрительных мест. Для хранения истории будет использоваться тот-же SonarQube или для текущего состояния можно использовать phpcpd)

Управление репозиториями будем осуществлять средствами GitLab CE.

Композиция поднятия всего этого добра будет состоять из:

  • Поднятие nGinx в Docker контейнерах и шифрование трафика при помощи Let’s encrypt сертификатов;
  • Поднятие и настройка GitLab за nGinx в Docker;
  • Настройка Jenkins для запуска заданий;
  • Настройка GitLab CI для запуска заданий;
  • Парсинг и агрегирование данных из статического анализатора кода на сложность;
  • Вывод информации из базы данных статического анализатора кода на сложность в красивом формате с временным прогрессом состояния проекта;
  • Парсинг и агрегирование Данных из статического анализатора кода на Copy/Paste;
  • Вывод истории из базы данных статического анализатора кода на Copy/Paste в красивом формате с временным прогрессом состояния проекта;
  • Агрегирование и парсинг результатов запуска авто тестов и сохранение результатов в БД;
  • Вывод статуса проекта относительно прогона теста и определенного комита;
  • Агрегирование и парсинг данных покрытия кода тестами с последующим сохранением в БД;
  • Вывод хронологической истории о покрытии тестами кода в зависимости от коммита.
  • Генерация виджетов для данных из анализаторово по номеру комита

По мере развития комплекса ссылки на проделанные работы и иструкции будет размещаться в выше стоящем списке.