所以,标题几乎把一切都说出来。我们使用 Jenkins 2 和 PHPUnit 6.5.12,几天前,一切都运行良好。现在,我们所做的每个构建,如果在 PHPUnit 部分出现故障(或更糟的是,出现错误),则根本不会标记为不稳定/失败。对于测试,我们使用 PHPUnit + Selenium Standalone 3.4.0 和最新的 geckodriver。(是的,有更新版本的 Selenium 可用,但它们总是会因异常而终止测试并且根本不运行 - 3.4.0 运行良好。)
运行单元测试的管道的一部分如下所示:
stage ('UnitTests') {
steps {
sh 'cd module/App/test/ && chmod a+r+w+x runtests.sh && ./runtests.sh'
}
}
}
post {
success {
slackSend color: '#458B00', message: "Build success for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
sh 'rm -rf \\"${WORKSPACE}/data/cache/*\\"'
sh 'rm -rf ${WORKSPACE}/data/cache/*'
sh 'rsync --delete -r "${WORKSPACE}"/* myhost:/path
}
failure {
slackSend color: '#8C1717', message: "Build failed for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
}
unstable {
slackSend color: '#FF8C00', message: "Build unstable for Pipeline ${env.JOB_NAME} [#${env.BUILD_NUMBER}]"
}
}
runtests.sh 本质上启动了 PHPUnit 测试(以及 Selenium 独立服务器)并最终终止 Selenium 和所有剩余的 Firefox 会话。
现在,据我所知,PHPUnit 应该有一些退出代码,例如 1 表示失败,0 表示成功等等。那么,这里发生了什么事吗?据我所知,没有发布任何涉及这些内容的新版本。
我还读到过,可能 PHPUnit 会输出一份报告,而 jUnit 则会获取该报告,然后使用该报告来检查一切是否正常,但正如我所说的 - 它之前是可以正常工作的,并且正是通过这种配置。
希望有人能有一些想法,因为我确实没有。
答案1
您应该检查 phpunit 和脚本的退出代码。Jenkins 使用 sh 步骤时,仅考虑整个脚本的退出代码,而不考虑其中的任何内容。也许之前它之所以能工作是因为无法杀死工作人员?据我所知,您提到的其他功能是由 JUnit 插件提供的。