Интеграция Telegram бота в Jenkins

Вступление

Здравствуйте! Меня зовут Сергей, и я хотел бы поделиться опытом интеграции Telegram-бота в систему непрерывной интеграции Jenkins. Целью этой задачи было обеспечение возможности получения результатов сборки в удобном формате прямо в мессенджере Telegram.

При выполнении задачи опирался на труды замечательных авторов.:

https://github.com/qa-guru/allure-notifications

https://habr.com/ru/companies/ru_mts/articles/720692/

Для начала создайте Telegram бота, через https://t.me/BotFather

Глава 1. Установка плагинов.

Для успешного выполнения задачи убедитесь, что все необходимые плагины установлены. Вот те из них, которые я лично устанавливал в процессе работы.

Интеграция Telegram бота в Jenkins

Глава 2. Настройка Telegram бота.

Напишите @BotFather, чтобы создать бота. У него же берем токен и название бота (которое придумали).

Берём токен тут.
Берём токен тут.
Интеграция Telegram бота в Jenkins

Глава 3. Добавление Post build task.

Переходим в нашу общую сборку.

Интеграция Telegram бота в Jenkins
Интеграция Telegram бота в Jenkins

Добавляем Post build task и заполняем его.

Интеграция Telegram бота в Jenkins

Первый скрипт заполняется аналогично второму, однако во втором необходимо указать рабочую директорию и путь к jar-файлу.

Первый скрипт общий.

cd .. FILE=allure-notifications-4.6.1.jar if [ ! -f "$FILE" ]; then    wget https://github.com/qa-guru/allure-notifications/releases/download/4.6.1/allure-notifications-4.6.1.jar fi

Во втором скрипте прописываем собственный путь.

java "-DconfigFile=/____/config.json" -jar /____/allure-notifications-4.6.1.jar
Интеграция Telegram бота в Jenkins

Глава 4. Загрузка json и var-файла. Включение видимости id в профилях Telegram.

Далее загружаем и сохраняем jar файл и Json в корневую папку, где наши тесты. Актуальный jar берем тут https://github.com/qa-guru/allure-notifications/releases

Сonfig.json - это шаблон, на основе которого формируется отчет в Telegram.

{   "base": {     "project": "",     "environment": "",     "comment": "",     "reportLink": "",     "language": "ru",     "allureFolder": "",     "enableChart": ,     "durationFormat": ""   }, "telegram": {     "token": "ТУТ_ТОКЕН_БОТА",     "chat": "ТУТ_ID_ЧАТА",     "replyTo": ""   } }

Порядок заполнения:

  • project, environment, comment - имя проекта, название окружения и произвольный комментарий.
  • reportLink - ссылка на Allure report с результатами прохождения автотестов.
  • language - язык, на котором будет сформирован текст для оповещения (варианты: en / fr / ru / by / cn).
  • allureFolder - путь к папке с результатами работы Allure.
  • enableChart - требуется ли отображать диаграмму (варианты: true / false).
  • logo - путь к файлу с логотипом (если заполнено, то в левом верхнем углу диаграммы будет отображаться соответствующий логотип).
  • durationFormat (optional, default value is HH:mm:ss.SSS) - определяет желаемый формат вывода для продолжительности тестов.

Также необходимо создать канал в Telegram и добавить туда своего бота. Когда добавляете в JSON идентификатор чата, перед ним нужно написать "-100". Например, если идентификатор чата "xxxxxxxxxx", то в JSON он будет выглядеть как "-100xxxxxxxxxx". Чтобы найти идентификатор чата, воспользуйтесь следующим способом:

Интеграция Telegram бота в Jenkins
Интеграция Telegram бота в Jenkins
Интеграция Telegram бота в Jenkins
Интеграция Telegram бота в Jenkins

После этого видим во всех профилях id.

Интеграция Telegram бота в Jenkins

Загружаем в корневую папку json и var-файл.

Интеграция Telegram бота в Jenkins
Интеграция Telegram бота в Jenkins

Глава 5. Получение отчёта в Telegram.

Создаем канал, который может быть как частным, так и общедоступным. Предоставляем нашему боту права администратора, чтобы он мог отправлять сообщения с отчетом. Бот успешно подключен. Запускаем процесс сборки и ожидаем получения отчета.

Интеграция Telegram бота в Jenkins
Интеграция Telegram бота в Jenkins

Включаем сборку и дожидаемся отчёт.

Интеграция Telegram бота в Jenkins

Благодаря интеграции Telegram-бота в систему непрерывной интеграции Jenkins, мне удалось реализовать механизм отправки кратких уведомлений о результатах тестирования через Allure-отчеты. Это позволило команде быстро получать информацию о результатах сборки. Таким образом, была повышена эффективность процесса разработки и ускорен цикл обратной связи между разработчиками и тестировщиками.😎

30
5 комментариев