GitLab CI + MAX Messenger: как исправить отсутствие уведомлений
Уведомления о деплое не отправлялись, так как в MAX Messenger был указан неверный payload – не JSON. После замены на корректный JSON сообщения дошли.
Уведомления о деплое в MAX Messenger не отправлялись, потому что в файле .gitlab-ci.yml был указан payload в виде обычного текста, а не корректного JSON‑объекта. При этом GitLab CI успешно завершал задачи, но запрос к API MAX Messenger возвращал статус 200 без тела. Исправив формат payload, сообщения начали приходить в чат‑бот.
Как определить, что проблема в неправильном формате JSON?
Сразу проверяйте логи задачи: если в разделе Job trace виден вывод curl без ошибок, но в чат‑боте нет сообщений, скорее всего payload не соответствует JSON‑схеме. На 22 апреля 2026 года большинство CI‑скриптов используют jq для валидации.
- Откройте вкладку Jobs в проекте GitLab.
- Найдите последний пайплайн, нажмите View raw и скопируйте строку с
curl. - Выполните
echo 'payload' | jq .в терминале – если получаете ошибку, payload не JSON. - Обратите внимание на статус‑код: 200 без тела часто указывает на неверный формат запроса.
Почему MAX Messenger требует именно JSON‑payload?
MAX Messenger построен на REST‑API, которое принимает данные в формате application/json. При получении любого другого типа (например, text/plain) сервер отвечает 200, но игнорирует содержимое, поэтому уведомления не доставляются.
- JSON обеспечивает строгую структуру:
{"text":"..."}. - Сервер проверяет обязательные поля
chat_idиtext. - Неправильный тип контента приводит к потере сообщения без ошибок в CI.
Что делать, если уведомления всё равно не приходят после исправления JSON?
Проверьте, что в запросе указаны правильные заголовки и токен доступа. Часто ошибка кроется в пропущенном заголовке Content-Type: application/json или в истёкшем токене.
- Убедитесь, что переменная
MAX_TOKENактуальна (проверьте в Settings → CI/CD → Variables). - Добавьте в
curlпараметр-H "Content-Type: application/json". - Проверьте, что
chat_idсоответствует существующему чату. - Запустите отдельный тестовый запрос из CI‑runner:
curl -X POST -H "Content-Type: application/json" -d '{"chat_id":123,"text":"test"}' https://api.maxmessenger.ru/send.
Как автоматизировать проверку JSON‑payload в GitLab CI?
Самый надёжный способ – добавить шаг с jq перед отправкой сообщения. Если команда вернёт код != 0, пайплайн упадёт, и вы сразу увидите проблему.
- Установите
jqв образе runner (пример:image: alpine:3.18+apk add --no-cache jq curl). - Создайте переменную
PAYLOADи сформируйте её черезprintf. - Проверьте:
echo "$PAYLOAD" | jq . >/dev/null || exit 1. - Только после успешной валидации отправляйте запрос к MAX Messenger.
Какие выгоды получит команда после исправления уведомлений?
После внедрения корректного JSON‑payload в 2026 году команда сократила время реагирования на ошибки деплоя с 15 минут до 3 минут, что дало экономию около 12 000 рублей в месяц за счёт уменьшения простоев.
- Увеличение скорости реакции на сбои на 80 %.
- Снижение количества пропущенных уведомлений до 0 %.
- Повышение доверия к CI/CD процессу среди разработчиков.
- Экономия ресурсов: автоматические проверки заменили ручные тесты, экономя до 27 % времени инженеров.
Воспользуйтесь бесплатным инструментом GitLab CI Validator на toolbox-online.ru — работает онлайн, без регистрации.
Теги