Автоматизированное тестирование – важная часть разработки, но недостаточно просто запускать тесты. Важно предоставлять отчёты в удобном и наглядном формате, чтобы повышать прозрачность процессов и улучшать командную коммуникацию.

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):

    1. SMTP server: smtp.gmail.com

    2. SMTP port: 465

    3. Чекбокс протокола обмена 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.gmail.com

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.
    Команда запускается через скрипт, который находится в проекте в файле:

Заключение

В этой статье мы рассмотрели процесс настройки автоматической отправки отчетов Allure через Jenkins и GitLab CI. Такая интеграция позволяет упростить анализ результатов тестирования и повысить прозрачность процессов контроля качества.

Автоматическая отправка отчетов по электронной почте обеспечивает:

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

  • Автоматизацию рутинных задач, снижая затраты времени на анализ и распространение отчетов.

  • Повышение вовлеченности команды, так как все участники проекта получают актуальную информацию о состоянии тестирования.

Автоматизация отчетности не только экономит время, но и способствует повышению качества продукта, обеспечивая своевременную обратную связь и контроль за стабильностью тестируемой системы.

Спасибо за внимание!

Больше авторских материалов для SDET-специалистов от моих коллег читайте в соцсетях SimbirSoft – ВКонтакте и Telegram.

Комментарии (1)


  1. AleksSharkov
    29.08.2025 10:40

    Привет, у нас такая штука не взлетела и ушла в спам.

    Почему: среди дня у тестера может быть несколько запусков тестов, маленьких и больших, а еще куча разных репозиториев, в них могут быть отдельные пайпы, эти данные в почте дико раздражают. А еще есть ручные тесты, там вообще непонятно когда отправлять письмо.

    Мы что сделали:
    1. Инфу со всех запусков автотестов, инфу по ручным тестам и инфу по тестовому покрытию собрали в один Allure отчет, который в пайпе пересобирается и доступен у команде по статичной ссылке типа team/branch/
    2. На дейли (афтепати) тестер показывает актуальный отчет. На ретро смотрят покрытие