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

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

October 2024

Идея

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

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

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

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

Со временем росло число метрик и настроек. Теперь в 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.