如何在多个 Jenkins 作业之间共享 jacoco exec 文件

How to share jacoco exec files between multilple Jenkins jobs

我有几个 Java 项目运行在几个带有 Gradle 和 Jacoco 插件的 Jenkins 作业上。

假设我有两份工作:

核心工作,从SVN拉到他的工作区:/Jenkins_workspace/core/,然后构建然后创建它的jacoco exec文件。它工作正常,我可以看到代码覆盖率。

应用程序作业,从 SVN 拉到他的工作区:/Jenkins_workspace/app/,然后构建并创建其 jacoco exec 文件。它工作正常,我可以看到代码覆盖率

但是在应用程序作业中有一些测试实际上涵盖了核心项目的一部分。所以应该更新核心作业的代码覆盖率。我想核心项目应该可以访问应用程序作业的 jacoco exec 文件,但它们位于两个不同的工作区。

问题:核心作业如何访问app作业的jacoco exec文件来更新核心代码覆盖率?

您可以尝试同时使用 "destFile" 和 "append" 配置。 如果你使用maven:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>jacoco-ut</id>
            <phase>process-test-classes</phase>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
            <configuration>
                <destFile>/path/to/jacoco.exec</destFile>
                <append>true</append>
            </configuration>
        </execution>    
    </executions>
</plugin>

或gradle:

test {
    jacoco {
        append = true
        destinationFile = file("/path/to/jacoco.exec")
    }
}

jacoco 插件以某种方式不允许在当前作业工作区之外搜索可执行文件。

所以我所做的是,对于每个应用程序构建,其 jacoco exec 文件都被复制到核心工作区。核心作业将毫无问题地找到应用程序作业的 jacoco exec 文件。