Представьте себе: вы разработчик веб-проекта, работаете над решением задач и фиксом багов, не вылезая из своей любимой IDE. Если на продакшене (или на стейдже) случается какой-то баг, то вам прямо в IDE прилетает полная информация о нём, включая id пользователя сайта и полный стек-трейс. Вы фиксите баг, коммитите и пушите его как обычно, а затраченное на него время автоматически трекается в учётной системе – не надо никуда переключаться. Круто? Безусловно.
В этой краткой заметке я расскажу о том, как построить такую систему на примере продукции JetBrains (Rubymine и PHPStorm).
У меня система построена на следующих компонентах:
1. Продакшен-среда: обычный Linux-сервер или аккаунт на Heroku.
2. Rollbar: это публичный сервис для ведения учёта ошибок и исключений, он был рассмотрен в посте про full-stack environment.
3. Youtrack: трекер задач и багов. Почему не Jira? Потому что единый стек и интеграция с Rubymine/PHPStorm “из коробки”.
4. Гейт для веб-хуков из Rollbar в Youtrack.
5. Непосредственно IDE.
Необходимая подготовка:
У вас должны быть права на администрирование Youtrack. Установите необходимые плагины для учёта времени, погуглив по “youtrack auto time tracking”. Подсказка: добавьте в ваш проект несколько workflows, содержащих в своём наименовании фразу “timer”.
Настройте интеграцию IDE с Youtrack (меню Tools -> Tasks & Contexts -> Configure servers). Убедитесь, что вы можете делать Open task из IDE и видите список назначенных вам задач. При открытии задачи в IDE соглашайтесь на создание нового changelist (мне неясна суть этого термина, но без этой галочки нормально не работает ветвление в гите).
Убедитесь, что при этом задаче ставится статус In progress, а по её завершении (Close active task) – ставится Fixed. Убедитесь, что отмечается длительность времени работы над задачей.
Интегрируйте Rollbar к себе в проект.
Найдите гейт для пробрасывания запросов из Rollbar в Youtrack. Я такого не нашёл, поэтому написал гейт rollbar-youtrack за 5 минут на коленке. Он принимает запросы от Rollbar-а и ставит в Youtrack задачи с соответствующими заголовками. Как говорится – its enough for me, поэтому расширение и пулл-реквесты только приветствуются.
Добавьте web-hook на ваш гейт в настройках Rollbar.
Использование:
Имитируйте несколько ошибок в продакшене, и убедитесь что они отобразились в интерфейсе Rollbar. Посмотрите логи гейта – в них должны быть отображены запросы веб-хука. Нажмите Open task в IDE и убедитесь, что вы видите сообщения о багах.
Что можно было бы улучшить?
1. Появление всплывающего уведомления прямо в IDE. Я это решаю интеграцией с HipChat.
2. Приоретизацию багов над задачами (чтобы они были выше в списке), если это принято в вашем проекте.
3. Закрытие багов в Rollbar по их фактическому исправлению. Это можно обойти альтернативным путём, настроив Rollbar на авто-закрытие старых багов при очередном деплое.