如何在TeamCity PowerShell转轮中传播错误

我有一个TeamCity 7构建配置,它几乎只是使用各种TeamCity参数调用.ps1脚本。

我希望这可能是一个简单的事情:

>脚本

File

>脚本文件

%system.teamcity.build.workingDir%/Script.ps1

>脚本执行模式

Execute .ps1 script with “-File” argument

>脚本参数

%system.teamcity.build.workingDir% -OptionB %BuildConfigArgument% %BuildConfigArg2%

然后我会期望:

>如果我搞砸我的参数,脚本将无法启动,则Build将失败
>如果我的Script.ps1脚本抛出,Build将失败
>如果脚本以非0错误级别退出,我希望构建失败(也许这不是惯用的PS错误管理 – 只有.ps1才能通过没有异常来报告成功?)

问题:它不行。它应该如何工作?有什么我正在做的事情非常错误,我可以通过选择不同的选项来修复

the friendly TeamCity manual所示:

Setting Error Output to Error and adding build failure condition

In 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.

进行此工作的关键是更改两个默认值:

>在构建失败条件的顶层,打开一个错误消息由构建运行器记录:
>在[PowerShell]构建步骤中,显示高级选项并设置错误输出:错误

在9.1以下的作品(如果它也适用于早期版本,我不会感到惊讶):

>使用默认选项创建PowerShell构建步骤
>更改下拉列表来说Script:源代码
>添加陷阱{Write-Error“Exception $ _”;退出98}在脚本的顶部
>(可选但更正确的IMO适用于TeamCity构建脚本中的脚本)

显示高级选项并打开选项:添加-NoProfile参数
>(可选,但对于我来说,这应该是默认的,因为它更清晰地呈现as suggested by @Jamal Mavadat)

显示高级选项并打开错误输出:错误

(ASIDE @JetBrains:如果标签是“格式stderr输出为”,那么会误导)

这包括以下情况:

>解析错误[冒泡成为异常并立即停止执行]>异常[直接或间接抛出您的PS代码显示并触发TC的退出代码停止构建]>脚本中的显式退出n传播到构建(如果不为零则失败)

相关文章
相关标签/搜索