Інтеграція Jira і Slack на PHP

Нещодавно за наводкою одного товариша стали в компанії використовувати Slack. Тут же постало питання про інтеграцію його з Jira. Треба сказати, що Slack номінально має інтеграцію з Jira з коробки, однак на повірку виявилося, що вона обробляє далеко не всі події, ніяк не налаштовується і взагалі працює не так, як хотілося б. Тому було прийнято рішення написати свою інтеграцію на php.


Вимоги були сформовані наступним чином:

  • Повинна бути обробка всіх значущих подій Jira-завдання (Створення, Оновлення, Видалення, Призначення на користувача)
  • Повинна бути можливість розвести події від різних проектів по різних каналах
  • Повинна бути можливість направляти користувачеві особисте повідомлення при призначенні на нього завдання

Була зроблена спроба знайти готовий обробник запитів від JiraWebHook і адекватні php-класи для роботи з SlackAPI. Однак жодне рішення не сподобалося і було прийнято рішення зробити все повністю самостійно.

Що вийшло - власне, ось.

Тепер пару слів про те, що всередині.

Все складається з трьох класів:

  • JiraH^ Receiver - отримує дані з Jira;
  • SlackWebh^ Sender - відправляє дані в Slack (на стороні Slack було вирішено використовувати для прийому повідомлень IncomingHook integration як найпростішу, але відповідальну всім поставленим вимогам);
  • JiraSlackIntegration - клас, який реалізує власне логіку обробки подій і надсилання повідомлень.

Розгортається просто:

  • Клонує сховище або копіює файли;
  • Корінь вузла надіслати до теки www;
  • Створити теку для log-файлів у теці www (за замовчуванням www/logs) і дати права на запис для користувача, під яким виконується скрипт;
  • Додати в Slack інтеграцію «IncomingHook» і прописати отриманий URL в клас JiraSlackIntegration class (рядок 14);
  • Додати до Jira новий WebHook з URL хосту;
  • Встановити необхідні параметри $ projec^ ToChannels і $ jiraUsersToSlack у JiraSlackIntegration.

Ось, власне, і все. Можливо це комусь знадобиться. Буду радий зауваженням-доповненням.

Дякую!