Інтеграція з GitLab

Рецензент, а не спільний чат

Вбудована інтеграція GitLab з Telegram пише у спільний канал, тож merge request чекає, доки хтось випадково зазирне. WardenPoint читає той самий вебхук і доходить до людини, яку merge request назвав на ім’я.

Налаштування
Вебхук проєкту
Автентифікація
X-Gitlab-Token
Доходить до
Конкретної людини

З чого складається таке сповіщення

LIVE
GitLab → вебхук
MR !42 · рецензент @sjones · нові коміти
WardenPoint
прочитати рецензентів · упізнати логін · покликати саме його
Telegram
Voice call
Email

Налаштування

Три кроки в GitLab

Один вебхук на проєкт, а в плані Premium — і на групу. Секрет вписуєте в поле «Secret token», і GitLab надсилає його заголовком X-Gitlab-Token.

  1. 1Крок 1

    Додайте вебхук

    У проєкті відкрийте Settings → Webhooks → Add new webhook і вставте адресу точки доступу WardenPoint у поле URL.

    $ Settings › Webhooks › Add new webhook
  2. 2Крок 2

    Впишіть секрет

    Секрет інтеграції впишіть у «Secret token». GitLab додає його до кожної доставки як X-Gitlab-Token; без нього WardenPoint відмовляє.

    $ Secret token
  3. 3Крок 3

    Позначте події merge request

    У розділі Trigger позначте «Merge request events» і збережіть. Більше нічого не треба — події конвеєрів, пушів і коментарів пропускаються. Якщо перевіряєте кнопкою Test у GitLab, оберіть там теж «Merge request events» — тест іншого виду відкидається так само, а в проєкті має бути хоча б один merge request, щоб було що надіслати.

    $ Trigger › Merge request events

Формат

Вебхук merge request

GitLab перелічує рецензентів у тілі запиту. WardenPoint читає, чому сталася подія — призначили, нові коміти, попросили ще раз, — і кличе тих, кого ця причина стосується.

GitLab → WardenPoint
merge-request.jsonJSON
// merge request webhook (X-Gitlab-Event: Merge Request Hook)
{
"object_kind": "merge_request",
"user": { "id": 1, "username": "root" },
"project": { "id": 15, "path_with_namespace": "acme/api" },
"object_attributes": {
"iid": 42,
"title": "Fix login redirect",
"action": "open",
"draft": false,
"author_id": 1,
"source_branch": "fix/login",
"target_branch": "main",
"url": "https://gitlab.com/acme/api/-/merge_requests/42"
},
"reviewers": [
{ "id": 25, "username": "sjones", "state": "unreviewed", "re_requested": false }
]
}
Розсилка WardenPoint
WardenPoint response202
{
"status": "queued",
"notification_uuid": "notif_8h2k7yQrxJp",
"channels_planned": [
"telegram_voice",
"voice_call",
"email"
],
"escalation_chain_id": "esc_4j2k9bMcvL"
}

Правила маршрутизації

Чотири правила, з якими приходить нова інтеграція

Вони готові з першого дня. Змініть набір, додайте умову або приберіть правило — виграє перше, що збіглося, а останнє тримає решту в тиші.

Призначення

Вас додали до merge request

Відкриття merge request із рецензентами, додавання ще одного або зняття позначки чернетки доходить до тих самих людей: усіх нинішніх рецензентів, окрім автора і окрім того, хто щойно виконав цю дію.

match
reason = assigned
→ route
усі рецензенти
Коміти

Автор дослав зміни після ваших зауважень

Пуш у вихідну гілку або застосована пропозиція кличе лише тих, хто вже дивився зміни. Хто ще не відкривав — побачить їх, коли відкриє.

match
reason = new_commits
→ route
ті, хто вже дивився
Повторний запит

Вас попросили глянути ще раз

GitLab позначає рецензента як повторно запрошеного, і кличемо лише його. Одне застереження: якщо та сама правка ще й додає нового рецензента, подія назветься призначенням — виграє доданий, а повторно запрошеного дістає набір «Попросили повторно», а не це правило.

match
reason = re_requested
→ route
той, кого попросили

GitLab — питання

Часті питання про сповіщення з merge request

Вебхук називає рецензентів іменем користувача GitLab. На сторінці інтеграції ви один раз прив’язуєте кожне ім’я до отримувача; логіни з’являються там самі, з подій, що надходять, тож нічого не треба готувати заздалегідь. Якщо жодна з названих подією людей не прив’язана, merge request потрапляє до скриньки з переліком відсутніх логінів. Якщо частина прив’язана — їм сповіщення йде, а решта чекає прив’язки на сторінці інтеграції.
Безкоштовний план

Підключіть один проєкт і відкрийте merge request

Додайте вебхук, впишіть себе рецензентом і подивіться, як приходить повідомлення. Без картки й без ризику для продакшену.

  • Доходить до конкретної людини
  • Поважає тихі години
  • Чернетка і злиті мовчать