Приложение для GitLab, показывающее репозитории и присылающее уведомления о сборках в Mattermost
07.11.2023
Наш python-разработчик Дмитрий разработал приложение, которое показывает разработчикам все репозитории на GitLab, где они состоят, и присылает красивые уведомления в Mattermost о статусе сборки проекта.
Проблема
После ухода Slack из России мы перешли на новый корпоративный мессенджер — Mattermost. Его интерфейсные возможности уступают предшественнику.
Например, в Slack были удобные и красивые хуки о сборках проектов в GitLab, а в Mattermost уведомления приходят просто в виде текста, где вся информация в куче.
Решение
Мы решили развивать кастомную функциональность Mattermost, чтобы сделать его более удобным для внутренней команды. Начали с разработки приложения, которое показывает пользователю все репозитории на GitLab, где он состоит.
Человек простым кликом выбирает из общего списка репозиториев те, хуки с которых хочет получать. Всё происходит в модальном окне без лишних действий в консоли на сервере. Далее приложение самостоятельно создаёт webhook в репозитории и формирует нужные настройки.
Теперь каждый раз, когда срабатывает CI/CD (сборка проекта на сервере), в канал Mattermost, откуда вызвали приложение, приходят уведомления о статусе завершения сборки.
Выглядит это так:
1. Возникла критическая ошибка и сборка не удалась
2. Сборка прошла успешно, но произошли ошибки у дополнительных настроенных проверок
3. Сборка удалась, все проверки пройдены
Цвета уведомлений подсказывают статус сборки. Внутри есть ссылки, чтобы сразу перейти в GitLab и посмотреть, что пошло не так.
Разработка
Мы работаем преимущественно на Django, но приложение сделано на асинхронном и более быстром фреймворке FastAPI. В качестве базы данных Дмитрий использовал PostgreSQL. Приложение работает исключительно на сервере Creonit. Оно интегрировано в наш Mattermost через API и обменивается данными с GitLab.
Свяжусь с вами в течение дня, чтобы уточнить детали проекта и сориентировать по стоимости разработки. После этого обсудим цели проекта, требования к нему и начнём работу.
Свяжусь с вами в течение дня, чтобы уточнить детали проекта и сориентировать по стоимости разработки. После этого обсудим цели проекта, требования к нему и начнём работу.