我使用CAKE 0.22.0和TeamCity 9.x。
在TeamCity中,我只有一个构建步骤调用build.ps1
。反过来,它会运行build.cake
。
在build.ps1
中,我添加了以下内容:
trap
{
write-output $_
##teamcity[buildStatus status='FAILURE' ]
exit 1
}
原因是规避a known PowerShell bug(即,执行带有-file
的脚本时,不应该返回退出代码0。
在build.ps1
内抛出异常时,TeamCity会正确显示构建失败:
但是,如果build.cake
内发生错误,则TeamCity会错误地声称所有内容都成功运行:
以下是上面屏幕截图所引用的“成功”构建的相应构建日志:
如您所见,错误是在build.cake
任务中抛出的。 trap
中的build.ps1
子句未捕获此错误,因此未通知TeamCity构建失败。
我考虑过为OnError
中的所有任务添加build.cake
子句(该子句将包含与Information(@"Some error message\n##teamcity[buildStatus status='FAILURE']]"
类似的内容)),但这会导致可怕的重复数量码。
是否有一种简洁的方法可以确保build.cake
中trap
中的build.ps1
子句中的SKLabelNode
中的任务中出现的任何错误都会被捕获?