Вебхуки
или
автоматизация рутинных операций с помощью API Гитлаба и Ютрека
Кто я
Денис Шкотов
Стажер frontend-разработчик
Контур.Recognition (Истребования)
Пример рутины 1
Text
- Создали merge request
- Перешли в issue Youtrack'а
- Установили в Reviewed by имя ревьювера merge request'а
Пример рутины 2
Text
- Пофиксили что-то после ревью merge request'а
- Установили в assignee Гитлаба имя ревьювера
- Отписались в тикете на Ютреке, что фикс был сделан
Пример рутины ∞
Text
- Сделали что-то
- Перешли в Гитлаб/Ютрек
- Снова сделали что-то, что, могло бы быть автоматизировано
Варианты решения
Text
1. Оставить все как было (вручную)
2. Назначить того, кто будет это делать (дежурный \ бэтмен \ флэш \ etc)
3. Автоматизировать
Вебхук (Webhook)
Обработчик события, который шлет запрос на указанный URL, с информацией об этом событии
Webhooks vs API
Application
API
request
response
Application
request
Webhook
Event
Site
Site
gitlab-yt-webhooks (Хуки)

"Автоматизировать всех человеков"
Что умеют делать хуки (gitlab-yt-webhooks)?
Получать информацию из поступающих запросов
Совершать манипуляции с Gitlab и\или Youtrack в зависимости от полученной информации
Пример
- Создали merge request
- Gitlab посылает post-запрос на указанный URL с инфой о событии
- gitlab-yt-webhooks его обрабатывает, и совершает действия в зависимости от типа запроса
А как все работает?
Node.js
Обработчики post-запросов
Парочка классов для работы с API
А что я сделал для хуков?
Улучшенное распознавание ключевых слов в комментарии на Гитлабе
const isApproved = text.toLowerCase().match(/#(?:app?roved|acc?epted)/);
const isRejected = text.toLowerCase().match(/#rejected/);
const isFixed = text.toLowerCase().match(/#fixed/);
А что я сделал для хуков? 2
Изменение assignee merge request'а, в зависимости от ключевого слова в комментарии (#fixed \ #rejected)
А что я сделал для хуков? 3
Хочу себе такое же! Где взять?
903
или

Всем спасибо. Вопросы?
903
или

Вебхуки
By Alexander Sushko
Вебхуки
- 1,062