Как мы сократили отчёты по Jira с 2 часов до 1 клика: Jira Automation to Telegram
Представьте, что задачи в Jira самостоятельно назначают исполнителей в зависимости от статуса; тестировщик получает пинг сразу, как задача готова к тесту; еженедельный отчёт по задачам приходит в Telegram одним кликом.
Мы добились этого с помощью Jira Automation и Telegram Bot API, полностью избавившись от рутинных отчётов и ускорив работу команды.
Чтобы освободить команду от рутины, я возглавил инициативу по внедрению автоматизации — о её результатах расскажу в этой статье. Стоит сказать, что до этого я был обычным пользователем Jira, без глубокого погружения в её внутренние возможности. Тем интереснее этот кейс оказался для меня!
В нашей команде процесс еженедельной подготовки отчета выглядел так:
- менеджер открывает задачи Jira из текущего спринта,
- переносит их в Telegram, так как это наш основной мессенджер для общения
- вписывает статус и дату релиза.
Этот процесс отнимал значительное время: можно было случайно пропустить задачу или перепутать статусы, а за несколько часов до отправки что-то могло измениться. Также у нас было еще несколько мелких проблем, а именно каждый день в 11:00 у нас проходит дейлик, о котором постоянно нужно напоминать, так как обязательно кто-то о нем забудет. Также тестировщики сами мониторили доску/Telegram в поисках задач, готовых к тесту, а назначение исполнителей происходило вручную. В итоге часть задач могла долго висеть готовой к тестированию просто потому, что кто-то не увидел сообщение в телеграмме или был указан неверный исполнитель.
Постепенно мы начали внедрять автоматизацию: начали с того, что будем использовать каждый день — напоминание о дейли и о готовности задачи к тесту. Для начала я покажу вам триггер с напоминанием о дейлике: сам по себе он достаточно простой - запускается каждый день за полчаса до дейли, тегая всех участников команды и прикладывая ссылку на встречу:
Еще один триггер - уведомление тестировщика о том, что задачу можно брать в тест. Изначально разработчик сам писал в чат, когда задача была готова к тестированию, тегал менеджера, который в свою очередь писал тестировщику. Такая цепочка достаточно длинная – взялись за оптимизацию этого процесса:
Когда мы впервые настроили этот триггер, работал он достаточно просто: задача переходит в статус “К тестированию“, в Telegram отправляется сообщение об этом с упоминаем меня, чтобы в ленте сообщений я не пропустил уведомления, а я уже в свою очередь скидывал задачу нужно тестировщику.
Это уже решило половину проблемы и избавило разработчиков от необходимости писать в чат по каждой задаче. Но осталась вторая часть - необходимость передать задачу тестировщику. В этой связи триггер был улучшен: теперь он проверяет человека, который указан в поле “Тестировщик“ в карточке задачи и в зависимости от его значения уведомляет нужного человека. Если же это поле пустое, то уведомление приходит мне, как менеджеру.
В завершение моей дебютной статьи расскажу вам о самом сложном триггере, который я настраивал за последнее время.Недавно у нас изменился формат еженедельного отчёта: теперь нужно не просто перечислить задачи со спринта, а построить структуру «родитель → дочерние», включить в отчёт и родительскую задачу, и все её дочерние, указать их текущие статусы и даты релиза. Раньше такой отчет я бы сел собирать руками и потратил несколько часов, но захотелось попробовать все это максимально автоматизировать. Для этого требовалось использовать набор smart values и вложенных условий, с которыми раньше я практически не сталкивался.
Я изучил как получать список подзадач, группировать их по родительским ключам, форматировать даты и аккуратно вкладывать данные в единое сообщение. В результате получился webhook, который отправляет отчет в Telegram одним кликом.
· {{#lookupIssues}} … {{/lookupIssues}} — внешний цикл, который проходит по списку задач, полученных в предыдущем шаге с помощью блока “Найти задачи“.
· {{key}} - {{summary}} — формирует жирную ссылку на родительскую задачу по её ключу и краткому описанию.
· {{#issuelinks.outwardIssue}} … {{/issuelinks.outwardIssue}} — для каждой родительской задачи проходит ещё один цикл по её «внешним» связям, тк родительская задача связана с дочерними связью is parent of.
Внутри этого цикла:
· not(equals(project.key, "MAD")) — пропускает связанные задачи, если они принадлежат проекту с ключом MAD (тк это доска дизайна и нам не нужна)
· {{key}} - {{status.name}} - {{fields.priority.name}} — выводим ключ задачи, её статус и приоритет.
· {{if(dueDate.format("dd.MM.yyyy").isNotEmpty(), dueDate.format("dd.MM.yyyy"), "null")}} — форматируем поле дедлайна в dd.MM.yyyy; если оно пустое, подставляем строку "null".
В конечном итоге получаем следующий результат:
На данный момент мы настроили более 10 автоматических триггеров, которые закрывают наши основные потребности и боли — от напоминаний о дейликах до отчётов одним кликом. Так мы сократили время на организационные задачи в пять раз, ускорили переход между этапами и сделали всю работу прозрачной. В следующей статье я подробно расскажу, как создавать и настраивать такие триггеры в Jira Automation, чтобы вы могли повторить наш опыт.
Отдельная благодарность моему руководителю Павлу Шульцу за поддержку и идеи при разработке автоматизаций!