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,并将自定义工作区设置为我的实际项目目录。现在一切正常。