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

Allure 2+Jenkins. Генерируется пустой отчет.

jenkins
allure
Теги: #<Tag:0x00007f7b655bbc00> #<Tag:0x00007f7b655bb8b8>

(Роман Васин) #1

Проблема:
В Jenkins генерируется пустой отчет от Allure 2.

Настройки Jenkins:
Jenkins настроен локально http://localhost:8080
Установлен Allure Jenkins Plugin версии 2.23

Настройки Allure Jenkins Plugin:


Тесты запускаются через команду maven: clean test

Вывод консоли Jenkins после прохождения тестов:

Started by user admin
Building in workspace C:\Users\Teleca\.jenkins\workspace\maven-jlr
[maven-jlr] $ cmd.exe /C "C:\apache-maven-3.3.9\bin\mvn.cmd -f C:\jlr-test\pom.xml clean test && exit %%ERRORLEVEL%%"
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building jlr-test 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ jlr-test ---
[INFO] Deleting C:\jlr-test\target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ jlr-test ---
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\jlr-test\src\main\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ jlr-test ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ jlr-test ---
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\jlr-test\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ jlr-test ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 1 source file to C:\jlr-test\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.20:test (default-test) @ jlr-test ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.jlr.app.CreateProfileTest
Starting ChromeDriver 2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed) on port 32539
Only local connections are allowed.
сен 26, 2017 6:03:12 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 22.226 s - in com.jlr.app.CreateProfileTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 25.529 s
[INFO] Finished at: 2017-09-26T18:03:30+03:00
[INFO] Final Memory: 21M/213M
[INFO] ------------------------------------------------------------------------
[maven-jlr] $ C:\Users\Teleca\.jenkins\tools\ru.yandex.qatools.allure.jenkins.tools.AllureCommandlineInstallation\allure2\bin\allure.bat generate -o C:\Users\Teleca\.jenkins\workspace\maven-jlr\allure-report
allure-results does not exists
send analytics
Report successfully generated to C:\Users\Teleca\.jenkins\workspace\maven-jlr\allure-report
Allure report was successfully generated.
Creating artifact for the build.
Artifact was added to the build.
[htmlpublisher] Archiving HTML reports...
Finished: SUCCESS

Видно, что ругается на “allure-results does not exists”. Если создать папку руками, ошибка исчезнет, но отчет все равно будет пустым.

POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.jlr.app</groupId>
  <artifactId>jlr-test</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>jlr-test</name>
  <url>http://maven.apache.org</url>

  <properties>
	<aspectj.version>1.8.9</aspectj.version>
	
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.5.3</version>
    </dependency>  
	<dependency>
        <groupId>io.qameta.allure</groupId>
        <artifactId>allure-junit4</artifactId>
        <version>2.0-BETA18</version>
        <scope>test</scope>
    </dependency>
	 
	 <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>
		    <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>1.4.9</version>
			</dependency>
	 
		<dependency>
            <groupId>com.tngtech.java</groupId>
            <artifactId>junit-dataprovider</artifactId>
            <version>1.10.0</version>
            <scope>test</scope>
        </dependency>
      <dependency>
          <groupId>io.qameta.allure</groupId>
          <artifactId>allure-java-commons</artifactId>
          <version>2.0-BETA18</version>
      </dependency>
  </dependencies>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <testFailureIgnore>false</testFailureIgnore>
                <argLine>
					-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                </argLine>
				
                <properties>
                    <property>
                        <name>listener</name>
                        <value>io.qameta.allure.junit4.AllureJunit4</value>
                    </property>
                </properties>
				 <systemProperties>
                        <property>
                            <name>allure.results.directory</name>
                            <value>${project.build.directory}/allure-results</value>
                        </property>
                    </systemProperties>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjweaver</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
            </dependencies>
        </plugin>
		<plugin>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-maven</artifactId>
                <version>2.8</version>
            </plugin>
    </plugins>
</build>
  
</project>


(Михаил Братухин) #2

У вас точно в одной папке проект лежит и отчет?


(Роман Васин) #3

Михаил, проект у меня лежит в папке jlr-test. В этой папке allure при построении отчета создает две папки allure-results и allure-report. Если запускать тесты локально через maven, но без jenkins, то отчет генерируется в папку allure-report и отображается нормально.
Касательно C:\jlr-test\target\test-classes. Я не знаю почему он генерируется в эту папку, но при прохождении теста локально отчет отображается нормально.
И снова об jenkins - видно, что он генерирует аналогичные allure папки у себя в workspace. Может нужно перетащить свой проект туда или наоборот прописать как-то по особенному путь к проекту в jenkins?


(Роман Васин) #4

Решил проблему тем, что прописал в POM путь генерации allure-results в workspace jenkins (До этого генерировался в папку проекта)

<systemProperties>
          <property>
                    <name>allure.results.directory</name>
                    <value>C:\Users\Teleca\.jenkins\workspace\maven-jlr\allure-results</value>
           </property>
 </systemProperties>

#5

Спасибо! Твое решение помогло и мне:)


(Development Temp Vika) #6

Извините, а не можете показать свой pom со вставкой systemProperties пожалуйста? И какие настройки Вы сделали в джобе в Jenkins??


(stek) #7

DevelopmentTempVika, в pom файл

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.20</version>
            <configuration>
                <testFailureIgnore>false</testFailureIgnore>
                <argLine>
					-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                </argLine>
				
                <properties>
                    <property>
                        <name>listener</name>
                        <value>io.qameta.allure.junit4.AllureJunit4</value>
                    </property>
                </properties>
				**<systemProperties>**
**          <property>**
**                    <name>allure.results.directory</name>**
**                    <value>C:\Users\Teleca\.jenkins\workspace\maven-jlr\allure-results</value>**
**           </property>**
** </systemProperties>**
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjweaver</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
            </dependencies>
        </plugin>
		<plugin>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-maven</artifactId>
                <version>2.8</version>
            </plugin>
    </plugins>
</build>

(Development Temp Vika) #8

Ок, спасибо, помогло.