TeamCity概述中未显示CAKE任务中的错误

时间:2017-10-02 14:18:02

标签: c# powershell teamcity cakebuild

我使用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会正确显示构建失败:

enter image description here

但是,如果build.cake内发生错误,则TeamCity会错误地声称所有内容都成功运行:

enter image description here

以下是上面屏幕截图所引用的“成功”构建的相应构建日志:

enter image description here

如您所见,错误是在build.cake任务中抛出的。 trap中的build.ps1子句未捕获此错误,因此未通知TeamCity构建失败。

我考虑过为OnError中的所有任务添加build.cake子句(该子句将包含与Information(@"Some error message\n##teamcity[buildStatus status='FAILURE']]"类似的内容)),但这会导致可怕的重复数量码。

是否有一种简洁的方法可以确保build.caketrap中的build.ps1子句中的SKLabelNode中的任务中出现的任何错误都会被捕获?

1 个答案:

答案 0 :(得分:3)

Cake使用这些构建步骤设置在TeamCity上构建,当Cake脚本报告构建失败时构建失败。

亚军类型: PowerShell

步骤名称:构建蛋糕

执行步骤:如果之前的所有步骤都已成功完成

PowerShell版本: 3.0

平台:自动

版本:桌面

将stderr输出格式为:警告

工作目录:

脚本:源代码

脚本来源:

.\build.ps1
exit $LASTEXITCODE

脚本执行模式:从外部文件执行.ps1

我们设置的屏幕截图

enter image description here