如何在多个 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 文件。
我有几个 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 文件。