LINUX.ORG.RU

Как рисовать репорты в Дженкинсе?

 allure,


0

1

Есть сервер Jenkins, который гоняет тесты. Отчёты сохраняются в XML в формате совместимом с JUnit. Требуется красиво их оформить, например, как здесь: https://plugins.jenkins.io/test-results-analyzer

Поставил плагин «Test Results Analyzer», но получил таблицу из одного заголовка. Внизу написано «No build data retrieved. You may need to select a Module.» «Publish JUnit test result report» включён. Чего ему ещё не хватает?

Или можете порекомендовать другой плагин? Нужно рисовать число удачных и неудачных тестов и время выполнения тестов.

Дополнение 1: Проект с матрицей конфигураций (multi-configuration project). Для простого проекта с единственной конфигурацией всё работает. — Ответ: Нужно внимательно следить за параметром «Local module directory» в настройках SVN. Если параметр «» (пустая строка), в пути нужно добавлять директорию, куда идёт чекаут.

Дополнение 2: Похоже, «Test Results Analyzer» не умеет показывать результаты для всех элементов матрицы одновременно. А что умеет?

Дополнение 3: Allure умеет читать результаты из нескольких директорий. Но как показать их на одной странице раздельно? — Костыль: Переименовывать тестовый скрипт. Одноимённые тесты из разноимённых скриптов отобразятся как из разных Packages.

Дополнение 4: И что важнее: как запускать Allure из Jenkins? — Ответ: В «Post-build Actions», как и все подобные плагины. Но нужно правильно указать пути к XML. Например, создавать логи опцией

--junit-xml="$WORKSPACE/allure-results/$var1-$var2-...-$BUILD_NUMBER.xml"
Эта директория ДОЛЖНА ОТЛИЧАТЬСЯ от директории, где Allure создаёт отчёты (по умолчанию — allure-report).

★★★

Или можете порекомендовать другой плагин?

На том проекте где сталкивался с тестами ребята юзали Allure и были очень рады.

micronekodesu ★★★
()
Ответ на: комментарий от micronekodesu

На том проекте где сталкивался с тестами ребята юзали Allure и были очень рады.

Ему требуется доустанавливать какие-либо программы? Родная вики http://wiki.qatools.ru/display/AL/Allure Jenkins Plugin исчезла

P.S. Поставил плагин. Где включать?

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

Ему требуется доустанавливать какие-либо программы?

Да, Allure. В официальном Убунту отсутствует.

Где включать?

В конфигурации проекта, в разделе «Post-build Actions».

olegd ★★★
() автор топика
Ответ на: комментарий от micronekodesu

Спасибо. По поводу «скормить» оказалось достаточно указать список директорий (в виде workspace/project/var1/*/var2/*/srcdir/ )

В моём случае var1 — наборы тестовых скриптов, а var2 — режимы работы тестируемого приложения.

Теперь другая проблема. На странице Packages тестовые задачи разбиты по значениям var1, но данные для всех var2 свалены в кучу. А цель внедрения визуализации — как раз наглядно сравнивать скорость каждой функции в разных режимах.

Можно ли как-то разбить результаты по значениям системных переменных? Или хотя бы по директориям, откуда берутся логи?

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от micronekodesu

Вручную запускается нормально, но при запуске из Дженкинса в логе пишет:

ERROR: Step ‘Allure Report’ aborted due to exception: 
java.io.IOException: Can't find allure commandline <null>
	at ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation$2.call(AllureCommandlineInstallation.java:63)
	at ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation$2.call(AllureCommandlineInstallation.java:58)
	at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
	at ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation.getMajorVersion(AllureCommandlineInstallation.java:58)
	at ru.yandex.qatools.allure.jenkins.ReportBuilder.build(ReportBuilder.java:44)
	at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.generateReport(AllureReportPublisher.java:294)
	at ru.yandex.qatools.allure.jenkins.AllureReportPublisher.perform(AllureReportPublisher.java:218)
	at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
	at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
	at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
	at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
	at hudson.model.Build$BuildExecution.post2(Build.java:186)
	at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
	at hudson.model.Run.execute(Run.java:1752)
	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
	at hudson.model.ResourceController.execute(ResourceController.java:97)
	at hudson.model.Executor.run(Executor.java:429)

Эта ошибка появляется и если в Global Tools Configuration не прописывать путь к Allure, и если прописать полный путь «/usr/bin/allure», и если прописать только «allure».

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)

Не надо делать обсчеты статистики на дженкинсе. Выгружай всё на внешний сервис и там анализируй, заодно перегруппируешь и переименуешь по дороге.

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

alpha ★★★★★
()
Ответ на: комментарий от alpha

Не надо делать обсчеты статистики на дженкинсе.

Чем его заменить? Чтобы как можно меньше пакетов ставить. Чтобы по крону проверяло SVN, пересобирало, прогоняло тесты и рисовало красивые графики. Чуть не забыл: и чтобы посылало письма авторам коммита, поломавшего сборку.

Выгружай всё на внешний сервис и там анализируй, заодно перегруппируешь и переименуешь по дороге.

Какой? Allure устраивает? Тогда объясни, пожалуйста, как сделать выгрузку в него.

Или в Cucumber.

Или ещё во что-нибудь.

Все опробованные дополнительные приблуды обладают критическим недостатком — не заработали после установки.

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

Решение отсюда: http://automated-testing.info/t/allure-jenkins-ne-pokazyvayutsya-otchety/9966 ввести в скриптовой консоли

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';")

System.setProperty("jenkins.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';")

не помогло

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

Какой? Allure устраивает? Тогда объясни, пожалуйста, как сделать выгрузку в него.

результат теста - это текстовый файл, который лежит в workspace дженкинсовой джобы. Это артефакт, и в post-build шаге ты делаешь выгрузку этого файла куда-то, хоть по ssh, хоть по ftp, удобным тебе способом, переименовывая по дороге.

А на этот внешний storage уже натравливаешь allure или кого угодно как указано в доках.

alpha ★★★★★
()
Ответ на: комментарий от alpha

И раз уж на то пошло, как приказать Аллюру показывать результаты тестов из разных XML-файлов на одной странице, но разными графиками?

Или какая программа умеет группировать результаты в отчёте таким образом?

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

Как сделать, чтобы Дженкинс запускал Аллюр?

Наличия системных Allure и Maven недостаточно. Необходимо прописать в Global Tool Configuration автоматическую установку их последних версий: Maven-3.5.3 и Allure-2.6.0

Теперь осталось разобраться с путями в воркспейсах.

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

Да, проблема была в путях. Allure не может брать XML из директории workspace/jobname/ , обязательно хотя бы на уровень ниже: workspace/jobname/onemorelevel/

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

А pytest не будет работать, если в текущей директории и на уровень выше лежат одинаковые файлы conftest.py.

olegd ★★★
() автор топика
Ответ на: комментарий от olegd

Для уведомлений по почте необходим валидный адрес в «System Admin e-mail address». Но необязательно рабочий. admin@nowhere не подходит, god@hell.com сойдёт, вроде.

olegd ★★★
() автор топика
Последнее исправление: olegd (всего исправлений: 1)
Ответ на: комментарий от olegd

Allure не может брать XML из директории workspace/jobname/ , обязательно хотя бы на уровень ниже: workspace/jobname/onemorelevel/

А для многозадачной матрицы лучше сразу сохранять командой наподобие --junit-xml=«$WORKSPACE/allure-results/log-$var1-$var2-$BUILD_NUMBER.xml»

Похоже, эти XML затираются, поэтому если они нужны, их надо копировать куда-то ещё.

И нельзя делать одну и ту же директорию для читаемых результатов в XML (allure-results) и генерируемых отчётов в HTML (allure-reports).

olegd ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.