【发布时间】:2020-05-28 13:07:40
【问题描述】:
未找到对此特定问题的任何引用。
我正在寻找一种方法来在 Jenkins 管道中实现类似的目标,该管道使用 Protractor 和 Cucumber.js 运行我们的验收测试:
steps {
container('selenium') {
script {
try {
{
//run tests
}
}
catch (err) {
if (env.testFailed == 'true') {
println "A test failure exists - build status updated to failure"
currentBuild.result = 'FAILURE'
error "Test(s) have failed"
}
else {
println "No test failures exist - build status updated to success"
currentBuild.result = 'SUCCESS'
}
}
}
}
}
如果 testFailed 的 env var 为“true”,这将导致构建失败。原因是我们遇到了 Protractor-Cucumber 框架的错误,如果失败的测试重试并通过,阶段的退出代码仍然是 1。
所以在每个测试的 After 钩子中,如果场景状态失败,我使用 node.js 将 env var 设置为 true:
if (scenario.result.status === Status.FAILED) {
process.env.testFailed = 'true';
}
if (scenario.result.status === Status.PASSED) {
process.env.testFailed = 'false';
}
我发现的问题是 Jenkins 管道无法读取 catch 部分的代码块中的 env var 值。它始终为空。
有什么想法吗?
【问题讨论】:
-
可能,我认为写入文件的想法可能是我最好的选择
标签: node.js jenkins protractor jenkins-pipeline