我们有一个Scala项目,我们使用SBT作为其构建工具。 我们的CI工具是TeamCity,我们使用命令行自定义脚本选项和以下命令构建项目:
call %system.SBT_HOME%\bin\sbt clean package
构建成功时构建过程正常,但是,当编译失败时 - TeamCity认为脚本退出时使用exitCode 0而不是预期的1,这会导致TeamCity构建成功,尽管编译失败。
当我们在本地cmd上运行相同的命令时,我们看到errorLevel为1。
构建日志的相关部分:
[11:33:44][Step 1/3] [error] trait ConfigurationDomain JsonSupport extends CommonFormats {
[11:33:44][Step 1/3] [error] ^
[11:33:44][Step 1/3] [error] one error found
[11:33:45][Step 1/3] [error] (compile:compile) Compilation failed
[11:33:45][Step 1/3] [error] Total time: 12 s, completed Jan 9, 2014 11:33:45 AM
[11:33:45][Step 1/3] Process exited with code 0
我们如何让TeamCity认识到构建失败?
答案 0 :(得分:0)
尝试使用以下方式显式退出:
call %system.SBT_HOME%\bin\sbt clean package
echo the exit code is %errorlevel%
exit /b
答案 1 :(得分:0)
如果您无法让进程输出非零退出代码,那么您可以根据构建日志中的特定文本使用构建失败条件。有关文档,请参阅this页面,但实质上,如果构建日志中找到文本error found
,则可以使构建失败。