Автоматизированное тестирование – важная часть разработки, но недостаточно просто запускать тесты. Важно предоставлять отчёты в удобном и наглядном формате, чтобы повышать прозрачность процессов и улучшать командную коммуникацию.
Allure Report – это мощный инструмент для визуализации результатов тестирования. С его помощью можно легко анализировать результаты тестов, находить ошибки и следить за метриками.
Мы рассмотрим два популярных инструмента CI/CD:
Jenkins – универсальный инструмент, широко применяемый для автоматизации сборок, запуска тестов и создания отчетов.
GitLab CI – встроенная система GitLab для непрерывной интеграции и доставки, обеспечивающая автоматизацию процессов сборки и тестирования.
Но отчёты сами по себе малоэффективны, если команда не узнает о результатах вовремя. Чтобы тестирование было действительно полезным, важно оперативно уведомлять участников проекта о его статусе. Один из самых простых и эффективных способов – автоматическая отправка отчетов Allure по электронной почте.
В этой статье мы разберем:
как настроить SMTP-сервер для отправки почты в Jenkins.
как настроить GitLab Runner;
как автоматизировать отправку отчетов после выполнения тестов.
Эти шаги помогут сократить время на анализ тестов и повысить вовлеченность команды в процесс контроля качества.
Статья ориентирована на инженеров по QA, QA Automation и DevOps-специалистов, знакомых с основными принципами CI/CD и использующими такие инструменты, как Docker, Jenkins или GitLab CI.
Описание мини-проекта
Проект демонстрирует базовый процесс автоматизации API-тестирования с использованием популярных инструментов: Java, RestAssured, Docker, Jenkins и Allure Report.
Вы можете получить доступ к проекту по этой ссылке.
Рекомендуется создать форк (Fork) этого репозитория в вашем аккаунте, так как в дальнейшем нам потребуется указать ветку и URL для настройки pipeline.
Основные этапы работы проекта:
Запуск API-тестов с помощью библиотеки RestAssured для проверки работы тестового API Swagger Petstore.
Изолированное выполнение тестов в Docker-контейнере, управляемом Jenkins.
Автоматическая генерация и отправка Allure-отчёта по электронной почте после выполнения тестов.
Jenkinsfile настроен для автоматического выполнения всех этапов, его можно найти в директории jenkins проекта.
В проекте предусмотрена альтернатива Jenkins в виде файла .gitlab-ci.yml, который позволяет запускать аналогичный пайплайн в GitLab CI.
Требования:
Docker и Docker Compose: проект запускается в docker compose, что упрощает настройку окружения и повышает воспроизводимость проекта на всех платформах.
Установить Docker compose можно, следуя официальной инструкции.
Запуск Jenkins и настройка плагинов
Открываем терминал и следуем инструкциям ниже:
Создаем мостовую сеть в Docker с помощью следующей команды:
docker network create jenkins
Для сборки образов docker in docker и jenkins будем использовать docker-compose файл. В терминале необходимо открыть проект и перейти в директорию jenkins (для запуска наших контейнеров используются порты 2376, 8080 и 50000, если они заняты, то необходимо изменить порты на свободные, в файле docker-compose.yml), если с портами нет никаких проблем то, запускаем команду:
docker-compose up -d --build
После завершения сборки для настройки Jenkins открываем браузер и переходим по адресу: http://localhost:8080 (или к тому порту, который вы настроили для Jenkins при его установке).
Для разблокировки Jenkins, получаем пароль введя в терминале следующую команду:
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
-
После разблокировки Jenkins появляется страница Customize Jenkins. Здесь вы можете установить любое количество полезных плагинов в рамках вашей первоначальной настройки.
Выбираем:Установить рекомендуемые плагины — для установки рекомендуемого набора плагинов, которые основаны на наиболее распространенных вариантах использования.
После установки всех рекомендуемых плагинов появится страница Create First Admin User (Создать первого пользователя-администратора), укажите данные своего пользователя-администратора в соответствующих полях и нажмите Save and Continue (Сохранить и продолжить).
-
Для установки плагина Allure Report необходимо:
Открыть Jenkins перейти во вкладку Manage Jenkins → Plugins → Available plugins.
В поисковой строке ввести: allure и установить появившейся плагин кнопкой: Install.
Для активации плагина необходимо перейти во вкладку Manage Jenkins → Tools.
Найти Allure Commandline installations и кликнуть Add Allure Commandline.
В Name указать: allure.
Чекбокс Install automatically должна быть активирована и кликаем Apply.
-
Для установки Maven необходимо:
Открыть Jenkins перейти во вкладку Manage Jenkins → Tools.
Найти Maven installations и кликнуть Add Maven.
В Name указать: maven.
Чекбокс Install automatically должна быть активирована.
В Add Installer выбрать: Install from Apache и кликнуть Apply.
Инструкция написана на основе руководства пользователя Jenkins.
Подключение SMTP-сервера в Jenkins для отправки почты
В качестве источника электронных писем будем использовать почту Gmail.
Необходимо войти в свой аккаунт Google и создать пароль для приложения (пароль показывается 1 раз при его создании, поэтому советую его сохранить, он нам понадобиться дальше).
Пароль для приложения необходим для того, чтобы у приложения Jenkins был доступ к отправке писем через Ваш аккаунт без двухэтапной аутентификации.
Более подробно можно ознакомиться по ссылке.-
Открываем Jenkins, переходим во вкладку Manage Jenkins → System.
Находим пункт заполнения Extended E-mail Notification.
Заполняем поля (согласно документации от Google):SMTP server: smtp.gmail.com
SMTP port: 465
Чекбокс протокола обмена SSL должна быть активирована

Добавляем наш аккаунт Advanced → Add (кнопка под полем Credentials)
В поле Username заполняем наш логин от почты Gmail.
В поле Password заполняем сгенерированный пароль для приложения (см. пункт 1).

В Credentials не забудьте выбрать добавленный аккаунт и сохранить настройки.
Настройка Job’ы в Jenkins
Сейчас настроим запуск нашего pipeline с репозитория Git с ветки develop.
-
Открываем Jenkins и переходим на страницу: New Item или Create Job.
Вводим имя проекта (на своё усмотрение).
Выбираем Select an item type: pipeline.
Кликаем Ок.
-
Переходим к настройке pipeline:
Definition выставляем: Pipeline script
В поле script необходимо вставить скрипт с Jenkinsfile, который находиться в директории jenkins нашего проекта.
-
Перед запуском нашего pipeline, необходимо:
-
Указать ветку и URL репозитория (на строке 15):
git branch: 'branch of git repository’, url: ’https git repository url’
-
(Кавычки обязательны, замените branch и url на свой)
-
Указать email для отправки отчёта (на строке 42) при необходимости отправки почты на несколько адресов, адреса указываются через запятую:
to: ‘example1@mail.ru, example2@mail.ru’
(Замените ‘example1@mail.ru’ на свой email, кавычки обязательны)
И сохраняем настройки.

Запуск pipeline в Jenkins
Теперь мы можем запустить нашу сборку, для этого необходимо перейти в нашу созданную Job’у и нажать Build Now.
После запуска проект должен начать собираться в окне Builds.

Для детального осмотра наших stage в сборке, можно перейти в Pipeline Overview.

По завершению сборки на указанную почту должно прийти письмо с Allure отчетом, отчет находится в файле index.html, в файле build.log находится лог нашей сборки.
Allure report доступен сразу и не требует никаких дополнительных сборок.
Необходимо будет скачать index.html файл и открыть.

Allure отчет

Настройка GitLab Runner
Если Ваш проект в GitHub, то необходимо его перенести в репозиторий GitLab по инструкции.
В GitLab открываем проект и переходим в Settings → CI/CD → Runners и кликаем на New project runner.
Заполняем поле Tags, активируем чекбокс Run untagged jobs и кликаем Create runner.

На странице необходимо сохранить полученный токен для регистрации нашего runner’a.

Открываем терминал и создаем volume Docker:
docker volume create gitlab-runner-config
Запускаем регистрацию GitLab Runner’a, вместо “$RUNNER_TOKEN” необходимо подставить runner authentication token полученный при создании runner’a (кавычки обязательны):
Для Linux/Mac:
docker run --rm -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner register \
--non-interactive \
--url "https://gitlab.com/" \
--token "$RUNNER_TOKEN" \
--executor "docker" \
--docker-image alpine:latest \
--description "docker-runner"
Для Windows:
docker run --rm -v gitlab-runner-config:/etc/gitlab-runner gitlab/gitlab-runner register `
--non-interactive `
--url "https://gitlab.com/" `
--token "$RUNNER_TOKEN" `
--executor "docker" `
--docker-image alpine:latest `
--description "docker-runner"
При успешной регистрации GitLab Runner’a в терминале должна появиться надпись: Runner registered successfully.
Конфигурация GitLab Runner’a сохраняется в volume gitlab-runner-config.
Более подробная инструкция регистрации Gitlab Runner’a описана в официальной документации.
Запускаем контейнер с уже зарегистрированным GitLab Runner’ом.
Для Linux/Mac:
docker run -d --name gitlab-runner --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v gitlab-runner-config:/etc/gitlab-runner \
gitlab/gitlab-runner:latest
Для Windows:
docker run -d --name gitlab-runner --restart always `
-v /var/run/docker.sock:/var/run/docker.sock `
-v gitlab-runner-config:/etc/gitlab-runner `
gitlab/gitlab-runner:latest
После запуска на странице должно отобразиться, что runner зарегистрирован.

Настраиваем переменные окружения проекта, в GitLab переходим Settings → CI/CD → Variables и кликаем Add variable.
Key |
Value |
SMTP_SERVER |
|
SMTP_PORT |
465 |
SMTP_USER |
Логин от почты Gmail |
SMTP_PASS |
Сгенерированный пароль для приложения (см. Подключение SMTP-сервера в Jenkins для отправки почты) |
RECIPIENT_ADDRESS |
Почта куда будем отправлять отчет (Если письмо необходимо отправлять на несколько адресов, то укажите адреса через пробел) |
Обратите внимание на чекбоксы Visibility и Flags.


Запуск pipeline в Gitlab CI
В GitLab открываем проект и переходим Build → Pipeline schedules и кликаем Create a new pipeline schedule.
-
Заполняем поля:
Description (на своё усмотрение);
Cron timezone;
Interval Pattern (запланированное время запуска pipeline “0 0 * * *” - запускать один раз в день в полночь);
Select target branch or tag (ветка для запуска);

Кликаем Create pipeline schedule.

Для запуска pipeline кликаем по кнопке со стрелкой.

Переходим в Build → Pipelines и видим, что началась сборка.
Для более детального просмотра stages кликните по Running.


По завершению stage: send_allure_report на указанную почту должно прийти письмо с Allure отчетом, отчет находится в файле index.html.
Allure report доступен сразу и не требует никаких дополнительных сборок.
Необходимо будет скачать index.html файл и открыть.

Allure отчет:

-
Для отправки письма с отчетом allure в GitLab CI используется команда curl.
Команда запускается через скрипт, который находится в проекте в файле:email_message.sh
Заключение
В этой статье мы рассмотрели процесс настройки автоматической отправки отчетов Allure через Jenkins и GitLab CI. Такая интеграция позволяет упростить анализ результатов тестирования и повысить прозрачность процессов контроля качества.
Автоматическая отправка отчетов по электронной почте обеспечивает:
Мгновенный доступ к результатам тестов после их выполнения, что позволяет оперативно выявлять ошибки.
Автоматизацию рутинных задач, снижая затраты времени на анализ и распространение отчетов.
Повышение вовлеченности команды, так как все участники проекта получают актуальную информацию о состоянии тестирования.
Автоматизация отчетности не только экономит время, но и способствует повышению качества продукта, обеспечивая своевременную обратную связь и контроль за стабильностью тестируемой системы.
Спасибо за внимание!
Больше авторских материалов для SDET-специалистов от моих коллег читайте в соцсетях SimbirSoft – ВКонтакте и Telegram.
AleksSharkov
Привет, у нас такая штука не взлетела и ушла в спам.
Почему: среди дня у тестера может быть несколько запусков тестов, маленьких и больших, а еще куча разных репозиториев, в них могут быть отдельные пайпы, эти данные в почте дико раздражают. А еще есть ручные тесты, там вообще непонятно когда отправлять письмо.
Мы что сделали:
1. Инфу со всех запусков автотестов, инфу по ручным тестам и инфу по тестовому покрытию собрали в один Allure отчет, который в пайпе пересобирается и доступен у команде по статичной ссылке типа team/branch/
2. На дейли (афтепати) тестер показывает актуальный отчет. На ретро смотрят покрытие