在构建完成后,使用来自另一个构建配置的TeamCity的REST API构建失败

时间:2011-03-10 17:22:06

标签: rest teamcity

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

REST API的documentation非常稀疏。是不是可以通过REST API执行此操作,还是未记录?

澄清:

目前的流程如下:

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

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

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

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

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

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

您应该可以通过build Interaction scripts完成此操作。

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

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

Look at this

答案 2 :(得分:0)

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

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

(我赞成@sharma的回答和评论,因为它们肯定是提供信息的,但最终不能解决我的问题。)