相关疑难解决方法(0)

如何在TeamCity PowerShell运行程序中传播错误

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

我希望这可能是一个简单的设置问题:

  • 脚本

    文件

  • 脚本文件

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

  • 脚本执行模式

    使用"-File"参数执行.ps1脚本

  • 脚本参数

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

然后我会期待:

  • 如果我搞砸了我的论点并且脚本无法启动,则构建失败
  • 如果我的Script.ps1脚本抛出,则构建失败
  • 如果exit具有非0错误级别的脚本我希望构建失败(也许这不是惯用的PS错误管理 - 只有.ps1只能通过没有异常来报告成功吗?)

问题:它不起作用.它应该如何工作?有什么东西我做错了,我可以通过选择不同的选项来解决这个问题吗?

error-handling powershell teamcity

25
推荐指数
3
解决办法
1万
查看次数

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

我有一个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.

powershell teamcity

6
推荐指数
1
解决办法
3133
查看次数

SQL Server代理未报告PowerShell脚本中未捕获的异常导致的失败

我已经设置了一个SQL Server代理程序作业,其中包含一些需要每周处理的步骤.其中一个是PowerShell脚本,它将抛出以下(未捕获的)自定义异常:

$endfile = Test-Path "C:\Temp\1_${loc}_${lastpayweek}.csv"
IF ($endfile -eq $true) 
{
   throw "target file already exists"
}
Run Code Online (Sandbox Code Playgroud)

现在,当发生这种情况时,我可以在服务器代理历史记录中看到抛出了异常,但仍然报告该步骤是成功的.如果没有失败,服务器代理将不会发送通知电子邮件让我知道失败.

我这样调用PowerShell脚本:

powershell C:\scripts\rename_timesheet_export.ps1 -loc 3
Run Code Online (Sandbox Code Playgroud)

为什么报道成功?

sql sql-server error-handling powershell sql-server-agent

4
推荐指数
1
解决办法
2225
查看次数