我有一个 TeamCity 7 构建配置,它几乎只是对 .ps1
的调用。使用各种 TeamCity 参数的脚本。
我希望这可能是一个简单的设置问题:
File
%system.teamcity.build.workingDir%/Script.ps1
Execute .ps1 script with "-File" argument
%system.teamcity.build.workingDir% -OptionB %BuildConfigArgument% %BuildConfigArg2%
然后我会期望:
exit
s 与非 0
错误级别 我希望构建失败(也许这不是惯用的 PS 错误管理 - .ps1 是否应该仅在没有异常的情况下报告成功?)问题:它只是行不通。它应该如何工作?有什么我做错的事情可以通过选择不同的选项来解决吗?
最佳答案
正如 the friendly TeamCity manual 中所述:
Setting Error Output to
Error
and adding build failure conditionIn case syntax errors and exceptions are present, PowerShell writes them to stderr. To make TeamCity fail the build, set Error Output option to Error and add a build failure condition that will fail the build on any error output.
完成这项工作的关键是改变 两个默认值:
在 9.1 中,以下工作(如果它也适用于早期版本,我不会感到惊讶):
trap { Write-Error "Exception $_" ; exit 98 }
在脚本顶部 显示高级选项并打开选项:添加 -NoProfile 参数
显示高级选项并打开错误输出:错误
(旁白@JetBrains:如果标签是“将标准错误输出格式设置为”,那么误导性会降低)
这包括以下情况:
throw
n 直接或间接在您的 PS 代码中显示并触发 TC 的退出代码以停止构建] exit n
在脚本中传播到构建(如果非零则失败)关于powershell - 如何在 TeamCity PowerShell 运行程序中传播错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11647987/