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