Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Allure, Jenkins и необходимость фейлить джобу с упавшим тестом

jenkins
allure
Теги: #<Tag:0x00007f7b634c9718> #<Tag:0x00007f7b634c94e8>

(Антон) #1

Доброго время суток, коллеги.
Кто сталкивался с необходимостью при фейле тестов в сюите валить и джобу в дженкинсе?
Необходимое условие - полный allure репорт.
При включенной опции в pom.xml <testFailureIgnore>true</testFailureIgnore> отчеты генерятся, но при упавшем тесте джоба не фейлится. При выключенной опции джоба фейлится, но отчет мягко говоря не полный :slight_smile:


Allure - подборка типичных проблем возникающих в процессе использования и их решения
Не считываются аннотации Yandex.Allure перед тестовыми методами
(Eugene Moskalenko) #2

Блин, точно, а я то думаю, почему у меня билд саксесс для джобы, когда там брокен или фейл в тестах и письмо не приходит на почту. Совсем забыл про эту опцию… Но выходит, что если ее не указать, то тесты упадут на первом же фейле и не дойдут до конца, от чего и отчет будет не полным…

Тоже интересует этот вопрос… :slight_smile:


(Dmitrii Demin) #3

Нет под рукой точного названия, но есть плагин (для TestNG точно) в котором в том числе есть настройки % упавших тестов. В зависимости от настроек плагин выставит статус билда в FAILED / UNSTABLE / SUCCESS

Вообще я видел несколько плагинов, которые меняют статус билда по тем или иным условиям. Ищите и найдете =)


(Антон) #4

Не все так просто :slight_smile:
Джоба отчет не то что не генерит вообще, а не генерит частично, причем закономерности я так и не проследил…
В ТестНГ репортах отображаются все пройденные тесты, а в аллюре нет


(Sergey Korol) #5

А можно подробней? Мне не совсем ясно, каким образом может быть неполный отчет, если allure генерит репорты пост-фактум на основании сформированной во время выполнения тестов xml. Если по какой-то причине у вас неполный отчет, значит xml не содержит нужных данных. Возникает логичный вопрос - почему?

Какой unit framework используете? Как отчеты строите - плагином или при помощи top level maven target? Локально такая же картина наблюдается при изменении значения <testFailureIgnore>?


(Антон) #6

Да так и есть xml не полная получается - другого варианта не вижу.
Использую TestNG
В настройках все делал “по методичке” :slight_smile: для Jenkins с Allure plugin
Локально картина иная - с трех запусков есть все результаты… В Jenkins же не достаточно статистики, но есть мнение что теряется отчет с теста (в TestNG классификации), в котором есть упавший метод…
Для уточнения тесты (6 штук) идут в 4 потока, заданных в соответствующей testng.xml, включают в себя несколько классов, с несколькими тестовыми методами, ну и плюс дополнительное управление группами и приоритетами…


(Sergey Korol) #7

Какие версии testng / allure-testng-adaptor используете? Локально запускаете ведь через clean test -> site? Пробовали запускать на Jenkins через top level maven targets вместо плагина?


(Антон) #8

Версии прийду на работу гляну.
Локально так. Нет не через плагин не пробовали.


(Sergey Korol) #9

Ну вот попробуйте через jenkins запускать таким же образом, как и локально, - при помощи top level maven target, где собственно и будет указан site goal. Я именно так и делаю, никаких проблем с testng или неполными отчетами не замечал. Возможно какой-то баг с плагином. К тому же, разработчики Allure с testng не работают в принципе. Так что adaptor саппортится силами комьюнити. В новой версии его вообще не будет в core. Теперь адаптор будет частью testng team. Фактически из одного комьюнити его перекинули в другое. Что из этого выйдет - посмотрим. :slight_smile:


(Антон) #10

Странный подход господ из Яндекса :slight_smile:
А при таком подходе артефакт репорта будет ли виден?
Есть ли темка где такой подход обсуждался?


(Sergey Korol) #11

Репорт будет генериться там, где вы укажите в настройках allure-maven-plugin. Публиковать его можно при помощи html publisher plugin.

По темам: точно уже раньше обсуждались проблемы запуска jenkins plugin vs allure-maven-plugin.


(Eugene Moskalenko) #12

Можете пожалуйста кинуть в меня парочкой ссылочек, где что-то подобное можно почитать (на любом языке), не совсем понимаю, как подобное реализовать… У меня тоже через адаптер сделано… Спасибо. :slight_smile:


(Sergey Korol) #13

Да тут и читать ничего не надо. По аналогии с локальной сборкой, clean test выполняется в build секции. А site - в post steps. Все вполне логично.

Репорт публиковать еще “сложнее”:

Причем, это стандартный механизм для абсолютно любого html репорта.
Читать - не перечитать, не так ли? :slight_smile:


[Maven+JUnit] Выдаёт ошибку если один из тестов fail
(Eugene Moskalenko) #14

Пасиб :slight_smile:


(Антон) #15

И вроде все ясно, но после рана джобы с такими параметрами:

В результате в target не создается папка /site/allure-maven-plugin
Возможно это потому что в pom нет дополнительных настроек?

<plugin>
    <groupId>ru.yandex.qatools.allure</groupId>
    <artifactId>allure-maven-plugin</artifactId>
    <version>${allure.maven.version}</version>
</plugin>

(Антон) #16

Да кстати хочется добавить что еще одна причина отказа от Allure плагина в том что почему-то репорты прогона тестов в хроме!! перестали показывать полные результаты… в итоге одно на другое наложилось.


(Sergey Korol) #17

А вы точно в workspace проверяли, что ее нет? Может все таки путь неверный? :wink:
Ну и, к слову, кастомный путь к репортам можно сконфигурировать прямо в плагине.

<reporting>
        <excludeDefaults>true</excludeDefaults>
        <plugins>
            <plugin>
                <groupId>ru.yandex.qatools.allure</groupId>
                <artifactId>allure-maven-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <version>1.4.24.RC2</version>
                    <reportDirectory>${project.basedir}/../reports</reportDirectory>
                    <properties>
                        <allure.issues.tracker.pattern>https://url/%s</allure.issues.tracker.pattern>
                        <allure.tests.management.pattern>https://url/%s</allure.tests.management.pattern>
                    </properties>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

(Антон) #18

В итоге все получилось, когда изменил папку отчета в настройках…

            <plugin>
                <groupId>ru.yandex.qatools.allure</groupId>
                <artifactId>allure-maven-plugin</artifactId>
                <version>${allure.maven.version}</version>
                <configuration>
                    <version>${allure.version}</version>
                    <reportDirectory>${project.build.directory}/reports</reportDirectory>
                </configuration>
            </plugin>

И изменении версии с 1.5.0.RC2 на 1.4.24.RC2 причем что больше повлияло не знаю :slight_smile:


(Sergey Korol) #19

Эта версия мертва. Ее никогда не будет в релизе. На данный момент 1.4.24.RC2 - самая последняя. Причем, после нее будет уже полностью переписанный на Java 8 Allure 2. Скоро должна beta появиться.


(Антон) #20

Мде…сработало ровно один раз… потом результат такой…

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 51:51 min
[INFO] Finished at: 2016-06-30T08:54:03-07:00
[INFO] Final Memory: 35M/506M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project automation: There are test failures.
[ERROR] 
[ERROR] Please refer to C:\Jenkins\workspace\A-v1-imagenet-T-R-CH\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
Build step 'Invoke top-level Maven targets' marked build as failure
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at PROJECT level C:\Jenkins\workspace\A-v1-imagenet-T-R-CH\target\reports to /opt/getty/jenkins/jobs/A-v1-imagenet-T-R-CH/htmlreports/Allure_Report
ERROR: Specified HTML directory 'C:\Jenkins\workspace\A-v1-imagenet-T-R-CH\target\reports' does not exist.
Finished: FAILURE

Соответственно и джобы фейлед и скип…
А все потому что при падении любого теста site не происходит…
Как его втулить в постбилд экшн без понятия %)