Сегодня я хотел бы поделиться своим опытом синхронизации уведомлений с серверов Continuous Integration (Bamboo, Jenkins, TeamCity и т.д.) с бесплатным мессенджером от Павла Дурова — Telegram. Мы хотели решить эту проблему, потому что программисты нашего проекта не отвечали на уведомления, отправленные по электронной почте, а мы пользуемся корпоративным мессенджером Telegram. Подопытным CI является наш корпоративный Bamboo, от которого должны приходить эти самые уведомления.
Для организации этой синхронизации мы будем использовать BOT API от Telegram, Gmail API от Google, а также наш сервер Ubuntu в Digital Ocean. Во-первых, нам нужно создать нового бота для Telegram. Для этого рекомендую воспользоваться пунктом 1 из этой статьи: habrahabr.ru/post/262247 .
После регистрации мы получаем данные доступа к нашему боту вида: 112714817:AAEwZWoZ6X1Go76gt3_hUz9717ihNboXrnw
Обязательно запомните эти данные — они нам понадобятся позже!
Далее нам нужно создать новый чат, в который наш бот будет отправлять уведомления.
Создаем и не забываем пригласить в него бота и своих коллег.
Теперь нам обязательно нужно узнать ID этого чата, для чего отправляем в чат любое тестовое сообщение, а затем в браузере или лоре (как вам удобнее) вводим:
https://api.telegram.org/bot <TOKEN>/getUpdates
Из ответа сервера мы узнаем, что наш идентификатор чата — «-35576913» (обратите внимание, что «-» — это часть идентификатора, потерять его нельзя).
Теперь проверим, что всё работает корректно.
Для этого пытаемся отправить тестовое сообщение от нашего бота: https://api.telegram.org/bot <TOKEN>/sendMessageЭchat_id=-35576913&text=Test_Message
Отлично: мы получили наше тестовое сообщение, а это значит, что всё работает как надо! Теперь плавно переходим к Gmail API. Сначала нам нужно создать новый проект в console.developers.google.com .
Затем мы предоставляем нашему проекту доступ к API Gmail. И затем нам нужно получить JSON с учетными данными нашего нового проекта:
Отлично, почти готово! Теперь я предлагаю использовать мой скрипт Python. Вы можете получить его здесь: github.com/egorvas/ci_to_telegram/blob/master/ci_to_telegram.py
Вам также потребуется установить два сторонних модуля Python: pip install google-api-python-client
pip install requests
Вам нужно поместить файл с client_secret.json в ту же папку, что и скрипт и запустить выполнение, после чего откроется браузер и предложит разрешить доступ к почте Gmail.
Для нашего проекта я создал новую учетную запись Gmail, к которой привязал уведомления от бамбука, но вы можете использовать уже созданную.
Как вашей душе угодно! Не забудьте проверить, что на этот адрес электронной почты приходят уведомления от CI. Теперь в папке со скриптом помимо client_secret.json должна быть папка с учетными данными.
Если все так, то вы все сделали правильно.
Теперь нам нужно немного доработать скрипт; для этого меняем переменные TELEGRAM_BOT_CREDENTIALS и CHAT_ID на те, которые мы узнали выше.
Теперь пробуем выполнить скрипт, и если все правильно, то все непрочитанные письма должны попадать в чат с вашим ботом.
Коротко о том, что делает скрипт. Сначала он находит все непрочитанные письма в вашем почтовом ящике, затем отправляет текст из них вам в телеграм, а затем заставляет эти письма читаться.
Остался самый последний шаг: нам нужно организовать периодический запуск этого скрипта.
Я использовал cron на нашем сервере Ubuntu. Загружаем нашу папку со скриптами по ssh на сервер и настраиваем cron:
Сначала установите cron: sudo apt-get update
sudo apt-get install cron
Затем запускаем редактор настроек cron: crontab -e
Добавляем повторение нашего скрипта каждую минуту: * * * * python /usr/share/telegram/ci_to_telegram.py>
Проверим, что все сохраняется корректно: crontab -l
Теперь наш скрипт выполняется каждую минуту.
Если новых писем на почте нет, то он ничего не делает. В противном случае он отправляет вам текст письма через Telegram и заставляет письмо читаться.
Вот и все.
Спасибо за внимание.
Если будут вопросы, пишите, буду рада ответить.
Теги: #программирование #ci #bamboo #jenkins #Telegram #уведомления #уведомления #программирование #Google API
-
Шпаргалка Google
19 Oct, 24 -
Дамочка.ру И Баннербанк Официально Проданы
19 Oct, 24 -
Bcache Готов К Включению В Ядро Linux
19 Oct, 24