我有一个使用工作流插件创建的Jenkins构建管道。在开始时,管道在docker容器内部运行gulp构建,然后使用以下代码存档测试结果
step([$class: 'JUnitResultArchiver', testResults: 'build/test-results/*.xml'])
在以下步骤中,我将工件打包并将它们发送到二进制存储库。
当单元测试未通过时,Jenkins了解构建不稳定并将其标记为黄色。然而,它仍然继续在管道中的后续步骤。当单元测试失败时,有没有办法让管道停止?
答案 0 :(得分:8)
JUnitResultArchiver 会在构建不稳定时导致此条件为真:
currentBuild.result != null
。
如果我没记错的话,它会将其设置为不稳定,但这足以检查它是否与null不同。
所以你可以做类似
的事情step([$class: 'JUnitResultArchiver', testResults: 'build/test-results/*.xml'])
if (currentBuild.result == null) {
//contintue with your pipeline
} else {
//notify that the build is unstable. //or just do nothing
}
答案 1 :(得分:0)
詹金斯方面无所事事,但是在古尔普方面。对gulp CLI的调用需要返回正确的错误值才能使sh步骤失败。 Jenkins只是解释了shell返回的内容,因此你需要让Gulp在测试失败时返回失败(参见this blog post,它似乎完全达到了这一点)。