运行主项目后,每个下游项目都有测试结果,但“最新聚合测试结果”没有测试。如何配置Jenkins以使所有测试结果显示在聚合列表中?
答案 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
要聚合,您需要将手指打印的工件从上游作业传递到下游作业。我的解决方案是安装复制工件插件。
对于我的测试设置,我创建了两个自由式作业a
和b
。
a
的配置:
echo $(date) > aggregate
b
aggregate
(来自上面的echo
命令) b
的配置:
a
aggregate
xml=...
命令results.xml
这应该足以让a
汇总b
的测试结果。我不确定是否有一种方法/插件可以根据下游结果更改a
的状态(如果b
失败,那么a
会追溯失败)。
答案 1 :(得分:0)
对于脚本管道, 说我有:
一项上游工作-mainJob
两个下游作业-downStreamJob1
和downStreamJob2
。
要汇总来自downstreamJob1
和downStreamJob2
的测试结果,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()
确保您拥有正确的filter
和artifacts
路径的最佳方法是使用此URL $BUILD_URL/artifact/
浏览每个下游作业中的工件,其中 BUILD_URL < / strong>是此版本的完整URL,例如http://server:port/jenkins/job/foo/15/