构建完成后,通过REST API和TeamCity从另一个构建配置进行构建失败

构建完成后,通过REST API和TeamCity从另一个构建配置进行构建失败,rest,teamcity,Rest,Teamcity,我有一些集成测试,由TeamCity在成功构建时启动。我成功地使用TeamCity REST API将构建标记为通过或失败,但实际上我希望将构建状态标记为通过或失败(与编译或单元测试失败导致构建失败的方式相同) REST的API非常稀疏。是不能通过RESTAPI实现这一点,还是没有文档记录 澄清: 目前的进程如下: “应用”TC构建配置实际上构建应用程序并运行单元测试 “测试”TC构建配置取决于“应用程序”配置是否成功完成。如果“App”构建成功(没有编译或单元测试失败),“test”配置将启动

我有一些集成测试,由TeamCity在成功构建时启动。我成功地使用TeamCity REST API将构建标记为通过或失败,但实际上我希望将构建状态标记为通过或失败(与编译或单元测试失败导致构建失败的方式相同)

REST的API非常稀疏。是不能通过RESTAPI实现这一点,还是没有文档记录

澄清:

目前的进程如下:

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

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

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

“应用程序”和“测试”是两种独立的TeamCity构建配置。由于它们是独立的,所以@sharma建议的构建脚本交互不会起作用,因为构建脚本交互可用于失败/更新当前正在运行的构建配置,而我正在尝试更新一个独立的、已经完成的构建配置/使其失败


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

您应该能够完成它

更新:,它应该有“生成日志的报告消息”。若您在运行任何应用程序构建的控制台上打印了以下消息。teamcity构建将失败并显示为错误。如果将状态更改为失败,它仍将失败。你有更多关于我提供的链接的信息。您可能要打印的示例消息:

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

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

每TeamCity支持:在构建完成后,无法更改构建状态。这不是RESTAPI的限制,这只是TeamCity没有实现的特性。 以下是我们的跟踪器中的相关功能请求:


(我对@sharma的答案和评论投了赞成票,因为它们确实提供了信息,但最终并不能解决我的问题。)

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


curl-v--request POST'-u login:password--data“comment=构建失败的原因”--data“status=FAILURE”--data“changeBuildStatus=buildId

我不确定这是否完全满足我的需要,但我会检查它。看起来构建交互脚本将在当前构建过程中使用,用于自定义通过/失败当前运行的构建,而不是外部构建。@Tom E-我已更新了一个链接,您可以将该链接报告到构建日志,并从脚本外部TeamCityTanks使构建失败,以便进行更新,这是更好的信息,但它并没有做我想做的事情。@tome-我知道你已经更新了。如果我是对的,你可能不想让上一个版本失败,而是想把这个版本作为一个替代方案。我不认为你想要的是“在它通过后让构建配置失败”!如果你有第二个构建配置作为构建步骤,这个想法可以暂时解决你的问题。这实际上是可行的。即使在构建完成后,它也会更改构建的状态。这应该是可接受的答案!万分感谢!