2011-03-10 92 views
1

我有一些集成测试在TeamCity成功构建时启动。我已经成功使用TeamCity REST API以标记构建为已通过或失败,但实际上希望将构建状态标记为已通过或未通过(以与编译或单元测试失败相同的方式构建失败)。构建完成后通过TeamCity从另一个构建配置通过REST API失败构建

REST API的documentation相当稀疏。是不是可以通过REST API来做到这一点,或者它没有记录?

澄清:

当前过程如下:

“APP” TC构建配置实际生成应用程序,并运行单元测试。

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

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

“应用程序”和“测试”是2个独立的TeamCity构建配置。由于它们是分开的,因此@sharma建议的构建脚本交互不会有任何用处,因为构建脚本交互可用于失败/更新当前正在运行的构建配置,而我试图单独更新/失败完成构建配置。

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

回答

0

所以答案我原来的问题,是有可能使用REST API来标记建立从另一个构建配置失败,就在于它是不可能。

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

(我upvoted @夏尔马的回答和评论,因为他们肯定翔实,但最终不是我的问题的解决方案。)

+0

只是一个想法,如果你有第二个构建配置作为构建步骤,该螨暂时解决你的问题。 – remo 2011-03-21 12:47:51

3

您应该可以通过build Interaction scripts来完成。

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

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

Look at this

+0

我不确定这是否符合我的需求,但我会检查出来。看起来,构建交互脚本将在当前构建过程中使用,以自定义传递/失败当前运行的构建,而不是外部构建。 – 2011-03-17 14:40:53

+1

@Tom E - 我已经更新了一个链接,您可以报告生成日志,并通过脚本在团队城市 – remo 2011-03-17 17:11:46

+0

上感谢您的更新,这是更好的信息,但它不会做我想做的事情。 – 2011-03-17 19:53:17

7

其实你可以改变构建状态甚至在构建具有以下非文件的要求完成(你需要buildId构建要更改):

卷曲-v --request POST“http://your-teamcity-url/ajax.html” -u账号:密码--data“的评论=你失败的原因“--data”status = FAILURE“--data”changeBuildStatus = buildId

+0

这实际上起作用。即使完成后它也会改变构建的状态。 – Jazz 2016-02-26 21:58:19

+0

这应该是公认的答案!太感谢了! – 2017-03-10 17:06:45