我们使用Jenkins作业和Phing进行部署。我们的应用程序是在CakePHP上制作的。当我运行Cake单元测试时,我遇到了一些错误(如预期的那样)。
/app/Console/cake test app AllQaTests --stderr --log-junit
但Phing并没有意识到它们并继续构建而不是停止进程并将构建标记为失败。有没有优雅的方法来处理测试输出?
现在我们使用一个单独的脚本来扫描测试日志并寻找" FAILURE"字。
答案 0 :(得分:1)
如果您的cake
命令输出0
以外的任何内容,则Jenkins会将其视为FAILURE
,并且相应的作业将被标记。
要回答搜索关键字控制台日志的问题,可以使用 Text-finder plugin 搜索控制台日志和/或任何其他文件以获取RegEx,并将构建标记为{如果找到{1}}或UNSTABLE
。
答案 1 :(得分:0)
我即将做同样的事情,但最终尝试使用ExecTask的returnProperty通过Phing捕获失败的构建:
<target name="caketest-local" description="Run CakePHP unit tests with PHPUnit and print human readable output.">
<exec dir="${basedir}" executable="${basedir}/app/Console/cake" output="${logdir}/caketest.log" returnProperty="test_result">
<arg line="test" />
<arg line="--stderr"/>
<arg line="--configuration=${basedir}/phpunit-coverage-text.xml" />
<arg line="app" />
<arg line="AllTests" />
</exec>
<if>
<not>
<equals arg1="${test_result}" arg2="0"/>
</not>
<then>
<fail msg="Build FAILED! Check caketest.log for details"/>
</then>
</if>
</target>