Przejdź do treści
Intum

GitHub - automatyczne komentarze pod taskami przy pull requestach

Aktualizacja: 3 min czytania

Konektor

  • Typ: service/github_webhook
  • Endpoint przyjmujący webhooki: POST https://<konto>.intum.com/connect/connector/<code>/receive
  • Autoryzacja: HMAC-SHA256 z secret_token konektora w nagłówku X-Hub-Signature-256 (format sha256=<hex>, porównanie w czasie stałym).

Pola konektora

Pole Opis
secret_token Wartość identyczna z polem “Secret” przy konfiguracji webhooka w GitHubie.
fields.url_regexp Regexp dopasowywany do pull_request.body. Domyślny: https://[^/]+\.intum\.com/organize/tasks/(\d+). Pierwsza grupa to ID taska.
fields.title_start Opcjonalna tablica prefiksów tytułu PR-a. Jeśli url_regexp nie znajdzie taska, a tytuł zaczyna się od któregoś z tych prefiksów - integracja zapisuje aktywność github_opened / github_closed zamiast komentarza.

Obsługiwane zdarzenia

Akceptowane jest wyłącznie zdarzenie pull_request (X-GitHub-Event: pull_request) z action:

  • opened - PR utworzony
  • closed z merged: true - PR zmergowany

Wszystkie inne wartości action (m.in. synchronize, closed z merged: false, edited, reopened) są ignorowane i zwracają 200 OK bez efektu.

Mapowanie autora

Login GitHuba (pull_request.user.login przy opened, pull_request.merged_by.login przy zmergowanym closed) jest mapowany na użytkownika Intum po polu external_id w Account::UserSetting. Brak dopasowania = komentarz przypisywany do technicznego użytkownika o ID -1.

Tworzenie konektora przez API

POST /connect/connectors.json
Content-Type: application/json

{
  "connector": {
    "kind": "service/github_webhook",
    "code": "github_webhook",
    "name": "GitHub Webhook (PR)",
    "active": true,
    "secret_token": "<48-znakowy hex>",
    "fields": {
      "url_regexp": "https://twoja-firma\\.intum\\.com/organize/tasks/(\\d+)"
    }
  }
}

Przykładowy payload z GitHuba

Minimalna struktura odbierana z GitHuba (skrócona):

{
  "action": "opened",
  "pull_request": {
    "html_url": "https://github.com/firma/repo/pull/42",
    "title": "Fix login bug",
    "body": "Naprawia logowanie. Task: https://twoja-firma.intum.com/organize/tasks/123",
    "merged": false,
    "user": { "login": "janKowalski" },
    "merged_by": null
  }
}

Dla zmergowanego PR-a action: "closed", merged: true, merged_by: { "login": "..." }.