Приложение для Mattermost

2023-11-20 10:28:14 Время чтения 3 мин 1619

Наш python-разработчик Дмитрий разработал приложение, которое показывает разработчикам все репозитории на GitLab, где они состоят, и присылает красивые уведомления о статусе сборки проекта.

Проблема

После ухода Slack из России мы перешли на новый корпоративный мессенджер — Mattermost. Его интерфейсные возможности уступают предшественнику. 

Например, в Slack были удобные и красивые хуки о сборках проектов в GitLab, а в Mattermost уведомления приходят просто в виде текста, где вся информация в куче.

Решение

Мы решили развивать кастомную функциональность Mattermost, чтобы сделать его более удобным для внутренней команды. Начали с разработки приложения, которое показывает пользователю все репозитории на GitLab, где он состоит. 

Человек простым кликом выбирает из общего списка репозиториев те, хуки с которых хочет получать. Всё происходит в модальном окне без лишних действий в консоли на сервере. Далее приложение самостоятельно создаёт webhook в репозитории и формирует нужные настройки. 

Теперь каждый раз, когда срабатывает CI/CD (сборка проекта на сервере), в канал Mattermost, откуда вызвали приложение, приходят уведомления о статусе завершения сборки. 

Выглядит это так:

1. Возникла критическая ошибка и сборка не удалась.

2. Сборка прошла успешно, но произошли ошибки у дополнительных настроенных проверок.

3. Сборка удалась, все проверки пройдены.

Цвета уведомлений подсказывают статус сборки. Внутри есть ссылки, чтобы сразу перейти в GitLab и посмотреть, что пошло не так. 

Разработка

Мы работаем преимущественно на Django, но приложение сделано на асинхронном и более быстром фреймворке FastAPI. В качестве базы данных Дмитрий использовал PostgreSQL. Приложение работает исключительно на сервере Creonit. Оно интегрировано в наш Mattermost через API и обменивается данными с GitLab.