В gitlab есть функционал об отправке сообщений в telegram. Но на примере этого сайта есть свои ограничения.
Что не так
Добавляя статьи и тестируя их через тестовые домены (окружения) в Gitlab CI (подробнее тут) понадобилась возможность получать уведомление, когда площадка готова для проверки. Процесс сборки, заливки и установки домена не мгновенный, а сидеть и отслеживать “когда же оно уже всё” - не очень продуктивно. Поэтому начал искать способ получения уведомлений при завершении работы пайплайна. В gitlab есть встроенная интеграция с telegram. И она даже умеет реагировать на изменение статуса пайплайнов. Проблема в сообщение, которое приходит из gitlab:
| |
Где:
repo_name- ссылка на репозиторий;#0000000000- ссылка на пайплайн;main- ссылка на ветку;Anon Anonovich (username)- имя пользователя на сайте и его ник в скобках.
Как видно из сообщения - нет ссылки на окружение, что бы можно было сразу перейти и посмотреть результат в браузере. Для
ветки main это не большая проблема, так как это основной домен сайта. Но домены для тестовых площадок создаются с
рандомным кодом, и что бы на него попасть всеравно приходится идти в репозиторий. Из-за этого было решено оставить такие
уведомления только для сбойных пайплайнов и включить дополнительный шаг в свой .gitlab-ci.yml.
Теория
Для отправки сообщения в telegram ботом нужно воспользоваться методом sendMessage. Здесь есть три важных параметра:
chat_id- идентификатор, куда будет отправлено сообщение (в моем случае идентификатор канала);text- собственно само сообщение;parse_mode- единственный не обязательный параметр, но лучше его задать самому, что бы можно было применить форматирование для сообщения.
Так же в ссылке https://api.telegram.org/bot<token>/sendMessage, нужно будет указать token бота.
Дополнительный этап в .gitlab-ci.yml
Теперь можно дополнить .gitlab-ci.yml (install-curl-jq-jo уже был описан в предыдущей статье):
| |
Теперь после удачной сборки и добавления временного поддомена в cloudflare прите сообщение в telegram со ссылкой на ветку и ссылкой на тестовый домен.
Желать отдельное сообщение для продакшн окружения не стал, так как там ссылка всегда одна и та же. Но если понадобится
выводить дополнительную информацию, то добавить не составит труда. Главное перепроверить что указано в
параметрах needs и rules.