Jenkins 无法为生成的诱惑报告 xml 文件识别正确的目录
Jenkins not able to identify the correct directory for the generated allure report xml file
我已经成功地将 Allure 报告集成到我基于 maven 的 testNG 项目中,并且能够使用码头服务器查看该报告。
但现在我正在尝试按照此处建议的说明将魅力报告与詹金斯整合 -
http://wiki.qatools.ru/display/AL/Allure+Jenkins+Plugin
我现在可以在我的 jenkins 页面上看到 allure 图标,但是如果我点击这个图标,我会看到一个 404-'page not found' 错误。
我进一步调试控制台输出,发现出现异常-
Exception in thread "main" ru.yandex.qatools.allure.data.ReportGenerationException: Could not find any allure results
at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureReportGenerator.java:58)
at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureReportGenerator.java:53)
at ru.yandex.qatools.allure.AllureMain.main(AllureMain.java:48)
Command aborted due to exception {}.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:153)
at ru.yandex.qatools.allure.command.ReportGenerate.runUnsafe(ReportGenerate.java:48)
at ru.yandex.qatools.allure.command.AbstractCommand.run(AbstractCommand.java:52)
at ru.yandex.qatools.allure.CommandLine.main(CommandLine.java:46)
我猜这个错误是因为 jenkins 无法识别诱惑报告 xml 的正确目录,为了更正我们必须修改 pom.xml 以便它可以告诉 jenkins正确目录的路径是什么。
有人请告诉我我在这里遗漏了什么。
您需要从 project.name\target\allure-results
获取从 Maven 项目到 Jenkins 的 Allure 结果路径,并将其添加到 Jenkins\Your Job\Configure\Allure Report\Result 中。
之后,您需要通过两种方式之一更改 Jenkins 安全设置。
通过从以下位置启动 Jenkins:
java
-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
-Djenkins.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
-jar jenkins.war
通过运行这两个脚本在http://Jenkins/script
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';")
编辑:
我刚刚找到了执行此操作的第三种方法。在你的 Jenkins 文件夹中打开 jenkins.XML 并添加
-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';" -Djenkins.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
争论。
编辑:
pom.XML 您要求:
<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.siba</groupId>
<artifactId>com.siba.selenium</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>selenium tests</name>
<description>selenium tests</description>
<!-- Change from here -->
<repositories>
<repository>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>
<packaging>jar</packaging>
<properties>
<aspectj.version>1.7.4</aspectj.version>
<allure.version>1.4.23</allure.version>
</properties>
<dependencies>
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-testng-adaptor</artifactId>
<version>${allure.version}</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
<argLine>
-javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
终于找到答案了。问题是我的詹金斯配置不在诱惑报告中。我以错误的方式导入了我的项目,所以我的 jenkins 试图在 jenkin 的工作区目录中找到报告,但什么也没有。
所以我做了什么,我将我的 maven 项目作为自由式项目重新导入到 jenkins,并将自定义工作区设置为我的实际项目目录。现在一切正常。
我已经成功地将 Allure 报告集成到我基于 maven 的 testNG 项目中,并且能够使用码头服务器查看该报告。 但现在我正在尝试按照此处建议的说明将魅力报告与詹金斯整合 - http://wiki.qatools.ru/display/AL/Allure+Jenkins+Plugin 我现在可以在我的 jenkins 页面上看到 allure 图标,但是如果我点击这个图标,我会看到一个 404-'page not found' 错误。
我进一步调试控制台输出,发现出现异常-
Exception in thread "main" ru.yandex.qatools.allure.data.ReportGenerationException: Could not find any allure results
at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureReportGenerator.java:58)
at ru.yandex.qatools.allure.data.AllureReportGenerator.generate(AllureReportGenerator.java:53)
at ru.yandex.qatools.allure.AllureMain.main(AllureMain.java:48)
Command aborted due to exception {}.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:153)
at ru.yandex.qatools.allure.command.ReportGenerate.runUnsafe(ReportGenerate.java:48)
at ru.yandex.qatools.allure.command.AbstractCommand.run(AbstractCommand.java:52)
at ru.yandex.qatools.allure.CommandLine.main(CommandLine.java:46)
我猜这个错误是因为 jenkins 无法识别诱惑报告 xml 的正确目录,为了更正我们必须修改 pom.xml 以便它可以告诉 jenkins正确目录的路径是什么。
有人请告诉我我在这里遗漏了什么。
您需要从 project.name\target\allure-results
获取从 Maven 项目到 Jenkins 的 Allure 结果路径,并将其添加到 Jenkins\Your Job\Configure\Allure Report\Result 中。
之后,您需要通过两种方式之一更改 Jenkins 安全设置。
通过从以下位置启动 Jenkins:
java
-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
-Djenkins.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
-jar jenkins.war
通过运行这两个脚本在http://Jenkins/script
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';")
编辑: 我刚刚找到了执行此操作的第三种方法。在你的 Jenkins 文件夹中打开 jenkins.XML 并添加
-Dhudson.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';" -Djenkins.model.DirectoryBrowserSupport.CSP="default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline';"
争论。
编辑:
pom.XML 您要求:
<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.siba</groupId>
<artifactId>com.siba.selenium</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>selenium tests</name>
<description>selenium tests</description>
<!-- Change from here -->
<repositories>
<repository>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
</repositories>
<packaging>jar</packaging>
<properties>
<aspectj.version>1.7.4</aspectj.version>
<allure.version>1.4.23</allure.version>
</properties>
<dependencies>
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-testng-adaptor</artifactId>
<version>${allure.version}</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14</version>
<configuration>
<testFailureIgnore>false</testFailureIgnore>
<argLine>
-javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
终于找到答案了。问题是我的詹金斯配置不在诱惑报告中。我以错误的方式导入了我的项目,所以我的 jenkins 试图在 jenkin 的工作区目录中找到报告,但什么也没有。
所以我做了什么,我将我的 maven 项目作为自由式项目重新导入到 jenkins,并将自定义工作区设置为我的实际项目目录。现在一切正常。