我的管道中有一个阶段正在运行一些UI测试,这是我得到的行为:
- 如果测试通过,则该阶段变为绿色,然后运行下一阶段,最后构建变为绿色。
- 如果测试失败,则该阶段变为绿色,下一阶段运行,最后构建为黄色(不稳定)
我怎样才能做到,如果一个测试失败了,管道也失败了,而不是进入下一个阶段?
这是我的管道阶段,我尝试添加一个post部分,但即使测试失败,它也会报告成功。
stage('UITests') {
steps {
withCredentials([file(credentialsId: 'env_file', variable: 'envFile')]) {
sh '''
cat $envFile > .env.dev
make run_tests
'''
}
}
// Fail build if test fail
post{
success {
echo "UI Tests passed moving to Build stage"
}
failure {
error "UI Tests Failed, stopping the build"
}}
}
在Jenkins的日志中,我可以看到当测试失败时,我得到
error命令失败,退出代码为1。
当测试通过时不会发生这种情况,那么是否有原因导致post block总是成功?
1条答案
按热度按时间dm7nw8vv1#
sh步骤返回与实际sh命令相同的状态代码:https://www.jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#sh-shell-script
您可以获取此状态代码,将其值赋给变量,然后失败并显示自定义消息: