12. Отправляем уведомления о результатах прохождения автотестов - qa-guru/knowledge-base GitHub Wiki
Что понадобится
- Библиотека, позволяющая реализовать отправку уведомлений ссылка(https://github.com/qa-guru/allure-notifications);
- Бот в Telegram.
Как создать бота
Для создания бота надо обратиться к другому боту, найти которого можно в поиске Telegram по никнейму @BotFather. Важно быть внимательным, много нехороших людей создает фейковые боты, которые полностью копируют аватарку и описание бота, но во время создания бота просят сказать ему какие-то персональные данные или прислать уникальный токен. Запомните, что у официального бота есть верификационная галочка. Также никому не сообщайте уникальный токен, с ним любой человек может получить доступ к вашему боту.
Так выглядит официальный профиль @BotFather в Telegram
Теперь надо открыть чат с BotFather и написать ему команду /newbot. После этого система попросит задать имя бота, которое будет отображаться в чате. Это имя может быть любым. Далее надо будет прислать никнейм бота. В этом случае никнейм обязательно должен заканчиваться словом bot. Вместо пробелов можно использовать нижние подчеркивания. После BotFather пришлет в чат сообщение о том, что бот создан. Вместе с этим придет уникальный токен, который следует сохранить, и ссылка на работу с Bot API.
Через BotFather можно задать аватарку бота, настроить его описание, подключить платежи и изменить имя пользователя.
Как узнать Chat ID
Бот должен присылать сообщения в определенный чат. В Telegram у каждого чата есть уникальный идентификатор, с помощью которого можно настроить оправку сообщений. Для того, чтобы узнать Chat ID, надо добавить бота в целевой чат сделать его администратором, перейти по ссылке вида https://api.telegram.org/botИдентификаторВашегоБота/getUpdates
, написать в чат и обновить страницу.
В результате мы увидим само сообщение, всю информацию о сообщении, ID отправителя и ID чата, который нам нужен. В стандартном виде страница будет рендериться без форматирования и нужные данные будет сложно найти. Ситуацию можно исправить, установив расширение JSONView.
Теперь мы знаем все для отправки сообщений с помощью терминала. Для этого нам понадобится следующий набор команд:
curl -X POST \
-H 'Content-Type: application/json' \
-d '{"chat_id": "123456789", "text": "This is a test from curl", "disable_notification": true}' \
https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage
Необходимо:
- Заменить содержимое
chat_id
на актуальный идентификатор чата; - Указать в
text
текст желаемого сообщения; disable_notification
отвечает за отправку сообщения с уведомлением или без;- Заменить
$TELEGRAM_BOT_TOKEN
на актуальный токен.
После заполнения команды можно нажать на Enter
и если все было сделано правильно, то бот отправит сообщение в чат.
Как отправлять уведомления из проекта
Важно: к проекту уже должен быть подключен Allure. Все взаимодействие идет с ним.
Первым делом необходимо по ссылке скачать последнюю версию библиотеки и добавить jar-файл в проект. Далее создадим в проекте отдельную папку notifications
и в ней файл конфигурации telegram.json
. После в созданный файл вставим и заполним следующую конструкцию:
{
"base": {
"project": "some project",
"environment": "some env",
"comment": "some comment",
"reportLink": "",
"language": "en",
"messenger": "telegram",
"allureFolder": "build/allure-report/",
"enableChart": true
},
"telegram": {
"token": "asdhsdgfjsdfgFgjhg4831)@",
"chat": "-1",
"replyTo": ""
}
}
Все поля интуитивно понятны из названия. Главное указать токен бота в поле token
и идентификатор чата в chat
. Также стоит убедиться, что путь в поле allureFolder
ведет к папке с данными работы Allure.
После заполнения json-файла надо перейти в терминал и выполнить следующую команду:
java \
"-DconfigFile=${PATH_TO_FILE}" \
-jar allure-notifications-4.1.jar
${PATH_TO_FILE}
надо заменить на путь к созданному json-файлу.
После выполнения команды бот пришлет в чат сообщения с результатами тестов.
Как подключить все к Jenkins
В настройке сборки Jenkins необходимо выбрать Добавить шаг
, в нем пункт Create/Update Text File
.
В File Path
указываем путь к json-файлу, в Text File Content
вставляем содержимое файла. Ставим галочки на Create at Workspace
и Overwrite file
.
Перед этим в json-файл надо добавить внутренние переменные Jenkins. Итоговый обновленный файл будет выглядеть так:
{
"base": {
"project": "${JOB_BASE_NAME}",
"environment": "some env",
"comment": "some comment",
"reportLink": "${BUILD_URL}",
"language": "en",
"messenger": "telegram",
"allureFolder": "build/allure-report/",
"enableChart": true
},
"telegram": {
"token": "asdhsdgfjsdfgFgjhg4831)@",
"chat": "-1",
"replyTo": ""
}
}
Далее жмем Добавить шаг после сборки
и выбираем Post build task
.
В поле Script
указываем команду для отправки сообщения и сохраняем.