Team City构建失败但未返回失败代码

时间:2017-11-07 18:13:23

标签: powershell teamcity

我有一个在TeamCity上运行Invoke-MsBuild的powershell脚本。在构建期间,我看到了一个“警告:未能构建”其中一个项目。然而,团队城市最终表示构建成功。如何强制TC退出并显示错误代码或至少报告构建失败。这是构建脚本的一部分。

18000

2 个答案:

答案 0 :(得分:1)

TeamCity并不擅长捕获和报告从Powershell抛出的异常。我的所有Powershell脚本都包含了类似

的内容
Try {
    Write-Host "Attempting to build $SolutionPath"
    $buildSucceeded = Invoke-MsBuild -Path $SolutionPath -MsBuildParameters $MSBuildParams -BuildLogDirectoryPath "$BuildPath\Logs" -KeepBuildLogOnSuccessfulBuilds
}
Catch [Exception] {
    Write-Error ('Failed: ' + $_.Exception.Message)
    Exit 1
}

通过退出非零来弥补问题。

我承认这很麻烦,有点令人不满意。我怀疑通过使用大多数(所有?)Powershell cmdlet支持的常规-ErrorAction参数可以获得某些东西。 (话虽如此,我不确定Invoke-MsBuild -ErrorAction Stop是否有效。)

答案 1 :(得分:1)

您可以在您的powershell脚本的开头添加$ErrorActionPreference = "Stop",这应该在出错时停止脚本执行并以非零代码退出。

$ErrorActionPreference的默认设置为Continue,这可能是您看到该行为的原因。您可以阅读更多here