下游的汇总结果是詹金斯的“无测试”

时间:2013-11-06 09:25:23

标签: jenkins

运行主项目后,每个下游项目都有测试结果,但“最新聚合测试结果”没有测试。如何配置Jenkins以使所有测试结果显示在聚合列表中?

2 个答案:

答案 0 :(得分:9)

汇总下游测试结果并不明显,也没有记录。以下步骤由How To Aggregate Downstream Test Results in Hudson合成。

出于某种原因,在b的配置的第2步

下面没有呈现此shell命令
xml='<testsuite tests="3">
<testcase classname="foo" name="ASuccessfulTest"/>
<testcase classname="foo" name="AnotherSuccessfulTest"/>
<testcase classname="foo" name="AFailingTest">
  <failure type="NotEnoughFoo"> details about failure </failure>
</testcase>
</testsuite>'

echo $xml > results.xml

要聚合,您需要将手指打印的工件从上游作业传递到下游作业。我的解决方案是安装复制工件插件

对于我的测试设置,我创建了两个自由式作业ab

a的配置:

  1. 执行shell echo $(date) > aggregate
  2. 汇总下游测试结果:检查自动汇总... 选项
  3. 构建其他项目:将要构建的项目设置为b
  4. 记录文件的指纹以跟踪使用情况:将文件指纹设置为aggregate(来自上面的echo命令)
  5. b的配置:

    1. 从其他项目复制工件:设置:
      1. 项目名称a
      2. 构建触发此作业的上游构建
      3. 要复制的工件aggregate
      4. 检查指纹工件
    2. 执行shell :从上面输入xml=...命令
    3. 发布JUnit测试结果报告:将测试报告XML 设置为results.xml
    4. 这应该足以让a汇总b的测试结果。我不确定是否有一种方法/插件可以根据下游结果更改a的状态(如果b失败,那么a会追溯失败)。

答案 1 :(得分:0)

对于脚本管道, 说我有:

一项上游工作-mainJob

两个下游作业-downStreamJob1downStreamJob2

要汇总来自downstreamJob1downStreamJob2的测试结果,Jenkinsfile的外观如下:

downStreamJob1 Jenkinsfile-存档并指纹化测试结果xml

archiveArtifacts allowEmptyArchive: true, 
artifacts: **/test-results/test/*.xml, 
fingerprint: true, defaultExcludes: false

downStreamJob2 Jenkinsfile-存档并指纹化测试结果xml

archiveArtifacts allowEmptyArchive: true, 
artifacts: **/output/junit-report/*.xml,  
fingerprint: true, defaultExcludes: false

artifacts路径使用“文件集”获取所有测试报告XML。详细了解文件集HERE

mainJob Jenkinsfile-从每个下游作业中复制工件

copyArtifacts filter: 'build/test-result/test/*.xml', fingerprintArtifacts: true, projectName: 'downStreamJob1', selector: lastCompleted()

copyArtifacts filter: 'output/junit-report/*.xml', fingerprintArtifacts: true, projectName: 'downStreamJob2', selector: lastCompleted()

确保您拥有正确的filterartifacts路径的最佳方法是使用此URL $BUILD_URL/artifact/浏览每个下游作业中的工件,其中 BUILD_URL < / strong>是此版本的完整URL,例如http://server:port/jenkins/job/foo/15/