我有一段Jenkins管道代码,我试图在其中对我的Angular 代码运行JUnit。
如果单元测试失败,Jenkins必须停止管道。它正在工作,但我无法看到“最新测试结果”和“测试结果趋势”
我使用的是Jenkins 2.19.1、Jenkins Pipeline 2.4和Junit 1.19。下面是管道代码:
{
sh("npm install -g gulp bower")
sh("npm install")
sh("bower install")
try {
sh("gulp test")
} catch (err) {
step([$class: 'JUnitResultArchiver', testResults: '**/reports/junit/*.xml', healthScaleFactor: 1.0])
junit '**/reports/junit/*.xml'
if (currentBuild.result == 'UNSTABLE')
currentBuild.result = 'FAILURE'
throw err
}
}
你知道我做错了什么吗?
4条答案
按热度按时间jbose2ul1#
如果使用声明性管道,则可以执行以下操作:
这也可以用于html发布或任何东西,不需要finally/catch等。它将始终存档结果。
请访问https://jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline了解更多信息。
如果有一个 clean 目标导致没有测试输出:
xmjla07d2#
用于发布Gradle构建生成的JUnit风格测试结果的Jenkins Pipeline步骤:
vbopmzt13#
我想我之前尝试做的方式是错误的。我已经改变了我的代码,如下所示,它的工作:
puruo6ea4#
在您的代码中,只有当测试失败时才生成JUnit报告,这可能不是您想要的。
我更喜欢使用
finally
,而不是post
,因为这样,东西就在一起了。