В 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
.