【问题标题】:Error in CAKE task not displayed in TeamCity overviewTeamCity 概览中未显示 CAKE 任务错误
【发布时间】:2018-03-13 15:13:51
【问题描述】:

我使用 CAKE 0.22.0 和 TeamCity 9.x。

在 TeamCity 中,我只有一个构建步骤调用 build.ps1。反过来,它运行build.cake

build.ps1,我添加了以下内容:

trap
{
    write-output $_
    ##teamcity[buildStatus status='FAILURE' ]
    exit 1
}

原因是为了规避a known PowerShell bug(即,使用-file 执行脚本在不应该返回退出代码0 时)。

build.ps1 内抛出异常时,TeamCity 正确显示构建失败:

但是,如果在 build.cake 中发生错误,TeamCity 会错误地声称一切运行成功:

这是上面截图中引用的“成功”构建的相应构建日志:

如您所见,错误是在build.cake 任务中引发的。 build.ps1 中的 trap 子句未捕获此错误,因此没有通知 TeamCity 构建失败。

我曾考虑在build.cake 中的所有任务中添加OnError 子句(该子句将包含类似于Information(@"Some error message\n##teamcity[buildStatus status='FAILURE']]" 的内容),但这会导致大量重复代码。

是否有一种简洁的方法来确保在build.cake 中的任务中引发的任何错误都被build.ps1 中的trap 子句捕获?

【问题讨论】:

  • 我想你可能找错了树。 trap 修复只会在您的 Powershell 脚本引发异常时帮助您。使用 cake 时,PS 脚本只是调用 cake 可执行文件并返回 Cake 返回的退出代码。 Cake 将处理任何从任务中抛出的异常。事实上,您的构建日志显示Process exited with code 1,对我来说,PS 脚本正在返回正确的代码,并且您的构建步骤可能没有使用退出代码来指示错误。我会检查您的 TeamCity 构建步骤。
  • @heavyd 感谢您的回复!在我的 TeamCity 构建步骤中,参数 Format stderr output as 设置为 Warning。这能否解释为什么 TeamCity 将构建显示为成功?
  • 对不起,我在原来的评论中弄错了,设置不是在单个构建步骤上,而是在构建配置的“失败条件”部分。 See docs here。确保选中 the build process exit code is not zero
  • @heavyd 谢谢你的建议。我已经检查了我的失败条件并且确实检查了the build process exit code is not zero,所以问题出在其他地方......

标签: c# powershell teamcity cakebuild


【解决方案1】:

Cake 本身使用这些构建步骤设置在 TeamCity 上构建,并且当 Cake 脚本报告构建失败时构建失败。

跑步者类型: PowerShell

步骤名称:构建蛋糕

执行步骤:如果前面的所有步骤都成功完成

PowerShell 版本: 3.0

平台:自动

版本:桌面版

将标准错误输出格式化为:警告

工作目录:

脚本:源代码

脚本来源:

.\build.ps1
exit $LASTEXITCODE

脚本执行模式:从外部文件执行.ps1

我们设置的屏幕截图

【讨论】:

  • 感谢您的回复!我已经采纳了你的建议,下次构建失败时我会报告——如果失败正确显示,那么我会接受你的回答。 :-)
  • 好吧,继续休息吧;)
  • 您好,不幸的是,TeamCity 继续声称失败的构建是成功的。但是,在将 Format stderr output as 从“警告”更改为“错误”之后,我设法达到了我想要的结果。根据 TeamCity 的文档 (confluence.jetbrains.com/display/TCD9/PowerShell),“如果‘构建运行程序记录了错误消息’(请参阅构建失败条件),则构建失败,请将错误输出选择器的默认设置从警告更改为错误。 " 如果您更新您的答案以与 TeamCity 的文档保持一致,我将重新接受它:-) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
相关资源
最近更新 更多