【问题标题】:Fail build via REST API with TeamCity, from another build config, after build is already finished在构建已经完成后,使用 TeamCity 从另一个构建配置通过 REST API 构建失败
【发布时间】:2011-07-12 21:50:06
【问题描述】:

我有一些由 TeamCity 在成功构建时启动的集成测试。我已经成功使用 TeamCity REST API 来标记构建通过或失败,但实际上想将构建状态标记为通过或失败(以同样的方式构建失败是由于编译或单元测试失败)。

REST API 的documentation 非常少。是不能通过 REST API 做到这一点,还是没有记录?

澄清:

目前流程如下:

“App”TC Build 配置实际构建应用程序并运行单元测试。

“测试”TC 构建配置取决于“应用”配置是否成功完成。如果“App”构建成功(没有编译或单元测试失败),“Test”配置启动,它会拉下构建工件并在应用程序上运行实时集成测试。在运行这些测试之前,“App”配置处于通过状态,因为它编译成功并且没有单元测试失败。

如果“测试”配置失败,我正在尝试将“应用程序”配置状态更改为失败。目前我只是将“App”标记为通过或失败,但实际的构建状态总是通过。本质上,我正在尝试获取更改日志或历史记录,以显示失败构建的红色 X 图标,而不是绿色复选标记。

“App”和“Test”是 2 个独立的 TeamCity 构建配置。由于它们是分开的,所以 @sharma 建议的构建脚本交互不会起作用,因为构建脚本交互可用于失败/更新当前正在运行的构建配置,而我正在尝试更新/失败一个单独的并且已经完成构建配置。

为什么我们有 2 个单独的配置,而不只是从主构建运行测试?当然是速度!集成测试最多需要 10 分钟才能运行,我们不希望仅仅因为集成测试正在运行而减慢编译周期。

【问题讨论】:

    标签: rest teamcity


    【解决方案1】:

    您应该可以通过build Interaction scripts 进行操作。

    更新Look here,它应该有“报告构建日志的消息”。如果您将以下消息打印到您正在运行的应用程序构建的控制台。 teamcity 构建将失败并显示为错误。如果您将状态更改为失败,它仍然会失败。您对我提供的链接有更多信息。您可能要打印的示例消息:

      "##teamcity[message text='Exception text' errorDetails='stack trace' status='ERROR']"
    

    Look at this

    【讨论】:

    • 我不确定这是否完全满足我的需求,但我会检查一下。看起来构建交互脚本将在当前构建过程中使用,以自定义传递/失败当前正在运行的构建,而不是外部构建。
    • @Tom E - 我已经更新了一个链接,您可以报告构建日志并在 teamcity 外部的脚本中使您的构建失败
    • 感谢您的更新,这是更好的信息,但它并没有做我想做的事情。
    • @TOM E- 我读到你已经更新了。而不是失败以前的构建,您可能希望将构建作为替代方案。我认为您想要的不可能 - “构建配置通过后失败”,如果我是对的!
    【解决方案2】:

    所以我最初的问题的答案是,是否可以使用 REST API 从另一个构建配置中将构建标记为失败,这是不可能的。

    根据 TeamCity 支持:构建完成后无法更改构建状态。这不是 REST API 的限制,这只是 TeamCity 未实现的功能。 这是我们跟踪器中的相关功能请求:http://youtrack.jetbrains.net/issue/TW-2529

    (我赞成 @sharma 的回答和 cmets,因为它们确实提供了丰富的信息,但最终不能解决我的问题。)

    【讨论】:

    • 只是一个想法,如果你有第二个构建配置作为构建步骤,那么这个小工具可以暂时解决你的问题。
    【解决方案3】:

    实际上,即使在构建完成后使用以下未记录的请求(您需要要更改的构建的 buildId),您也可以更改构建状态:

    curl -v --request POST "http://your-teamcity-url/ajax.html" -u login:password --data "comment=你构建失败的原因" --data "status=FAILURE" --data "changeBuildStatus=buildId "

    【讨论】:

    • 这确实有效。即使在构建完成后,它也会改变构建的状态。
    • 这应该是公认的答案!谢谢一百万!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2020-06-15
    相关资源
    最近更新 更多