Отслеживаем пулл реквесты через open source

PullKeeper — это новый open source проект от Ruby-разработчика Evrone Антона Богданова. С его помощью можно собирать полноценную статистику по пулл-реквестам (PR) для своих репозиториев на GitHub или GitLab, включая статистику отдельных разработчиков, сравнивать данные  с предыдущими периодами и отправлять уведомления. Подробнее о проекте расскажем ниже.

October 2024

Идея

В компании, где когда-то работал Антон, была практика регулярного код ревью, это отслеживали с помощью одного из GitHub Action. В момент создания реквеста он анализировал все старые PR в репозитории, рассчитывал статистику и добавлял ее комментарием: количество код-ревью, комментариев, среднее время, затраченное на ревью. 

Но особенности рабочего процесса и недостаток настроек не отражали актуальную статистику разработчиков. Например, кто-то любит работать по ночам, делает свой PR, а другой разработчик аппрувит этот код в начале рабочего дня, «затрачивая» на это по статистике восемь часов, что сильно искажало среднее время на ревью. Плюс, были реквесты в мастер-ветку, которые не нужно отслеживать. И главное, статистика была видна только в момент создания PR. Чтобы получить актуальные данные, нужно создавать новый запрос.

Все эти проблемы вдохновили Антона собрать свое решение. Первыми реализованными функциями были расчет статистики в реальном времени и настройки рабочего времени, для более точных расчетов. Проект понравился команде, и для сбора статистики перешли на PullKeeper. 

Со временем росло число метрик и настроек. Теперь в PullKeeper можно настраивать рабочее время, отпуска, выходные как для всей компании, так и для отдельных разработчиков. Решение умеет оценивать содержательность комментариев, и отмечать это в статистике. И, главное, PullKeeper работает не только с GitHub, но и с GitLab, и в будущем с другими платформами. С ростом функционала усложнился и изменился интерфейс сервиса. Также Антон перевел фронтенд с React на SolidJS, чтобы он работал быстрее.

Проект уже используют в работе 32 компании, которые отслеживают 84 репозитория. 

 

 

Функции

Статистика рецензентов

Данные обновляются каждый час, и учитывают отзывы, комментарии, среднее время рецензирования и другие метрики с описанием. Статистику можно собирать для отдельных репозиториев или всей компании.

Безопасность

Приложение требует read-only права для доступа к пулл-реквестам, и не использует код. Сами девелоперы могут видеть свою статистику, благодаря удобному способу аутентификации, но при желании эту фичу можно отключить.

Расчет времени

Для более точного расчета среднего времени, затраченного на ревью, есть несколько конфигураций настроек. 

Исключения

Возможность исключить из статистики отдельных сотрудников. Например, ботов или тестировщиков, которые создают PR в мастер-ветку с кодом других разработчиков. Также можно исключить PR при разных условиях, например, по названию, или в мастер-ветку. 

Сравнение данных

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

Уведомления

Сообщения в Slack/Discord/Telegram с последними новостями о компаниях и репозиториях. Данные также можно отправлять на кастомный URL-адрес или извлекать через API

GitHub и GitLab API

Данные о рецензентах, реквестах и комментариях собираются через GitHub или GitLab API. 

Достижения

Система достижений помогает отслеживать и сравнивать прогресс программистов. 

Анализ комментариев

Содержимое комментариев анализируется на соответствие специальному гайду. Содержательные и полезные комментарии положительно влияют на статистику. 

Установка

Весь код проекта доступен для изучения. Его можно установить локально или на свой сервер. Для локального запуска проекта: 

$ bundle install
$ rails db:create
$ rails db:schema:load
$ rails db:seed
$ yarn install
$ EDITOR=vim rails credentials:edit

Настройка

Добавьте компанию. Это абстракция для группы репозиториев с похожей конфигурацией. 

Добавьте репозиторий. Ссылка на репозиторий в GitHub или GitLab, которая далее будет использоваться для извлечения статистики. Извлекать данные может только один пользователь, остальные могут просто видеть статистику.

Добавьте токен доступа. Добавьте токен с правом read-only. PullKeeper извлекает данные о временных метках из пулл реквестов, комментов, ревью и их авторов.

Готово! Данные по разработчикам собираются на уровне репозитория, а также агрегируются для всей компании. Есть дополнительные метрики репозитория с конкретной статистикой. Чтобы получить доступ к собранным данным, разработчикам нужно просто войти в PullKeeper.

Дополнительные настройки. Настройки конфиденциальности, рабочего времени, правила исключения для запросов на извлечение, различные настройки расчета инсайтов, уведомления.

Стоимость

В базовой версии PullKeeper бесплатный, но для больших компаний есть дополнительные опции. В базовую версию входят: 

  • Восемь метрик для разработчиков.
  • 16 метрик для репозиториев.
  • Пять отслеживаемых репозиториев.
  • Метрики компании на основе репозиториев.
  • Легкий доступ для разработчиков.
  • Настройка рабочего времени, отпусков.
  • Настройка правил исключения.
  • Отправка аналитики в Slack/Discord/Telegram.
  • Доступ к API.
  • Система достижений.

 

Премиум-версия включает те же возможности, плюс 15 метрик для разработчиков вместо восьми, неограниченное число репозиториев, сравнение данных с предыдущими периодами, приоритетная поддержка и внедрение новых функций, поддержка онбординга. Такой пакет стоит €25 в месяц или €250 в год. Оплатить можно на странице профиля после входа. Доступен бесплатный пробный период на 100 дней. Есть также enterprise-версия, в которой дополнительно есть возможность селф-хостинга и десктопное приложение.

Планы на будущее

Проект продолжает развиваться и дорабатываться. Автор проекта работает над полноценным десктоп-приложением для enterprise-клиентов, которое запускается локально и не требует сервера. 

В веб-приложении тоже планируются изменения, должен появиться чат с админами, карма (достижения за все время). Плюс, улучшения уведомлений: нотификации для истекших токенов, регулярность уведомлений, пригласительные e-mail для новых пользователей. Из интеграций скоро появится возможность работать с Azure DevOps. 

У меня была идея создать что-то полезное, что-то чем бы действительно пользовались. Хотелось бы найти свою нишу и оставить «след в истории».
Антон Богданов
Автор PullKeeper
Будем на связи
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.