TeamCity构建步骤中的PowerShell退出代码始终为0

tom*_*ern 6 powershell teamcity

我有一个TeamCity构建步骤,它运行PowerShell(.ps1)脚本,如下所示:

try
{
    # Break something
    $a = 1 / 0
}
catch
{
    Exit 1
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,在构建日志中,步骤成功并以代码0退出.

[10:02:18] [步骤2/3]进程退出,代码为0

如果脚本中有任何失败,我希望步骤失败.我怎样才能做到这一点?

我们正在使用TeamCity Enterprise 8.0.5.

tom*_*ern 7

我刚发现这篇文章:

https://youtrack.jetbrains.com/issue/TW-21554

teamcity中存在一个错误,这意味着不会拾取非零的PowerShell返回码.

建议的解决方案是在检测到构建日志中的某些文本输出时创建构建失败条件.

但是,我的解决方案涉及不同的东西

在catch块中,您只需使用Write-Error cmdlet:

catch
{
    Write-Error -Exception $_.Exception
}
Run Code Online (Sandbox Code Playgroud)

然后,您必须确保在TeamCity中正确设置了两件事:

首先,构建步骤Error Output应设置为error,而不是警告:

在此输入图像描述

其次,在构建失败条件屏幕中,确保检查构建运行器记录的错误消息:

在此输入图像描述

希望这有助于某人.