我有一些集成测试由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分钟才能运行,我们不希望因为集成测试正在运行而减慢编译周期。
答案 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']"
答案 2 :(得分:0)
所以我原来的问题的答案是,是否可以使用REST API将构建标记为从另一个构建配置中失败,这是不可能的。
Per TeamCity支持:完成后无法更改构建状态。这不是REST API的限制,这只是TeamCity未实现的功能。 以下是我们跟踪器中的相关功能请求:http://youtrack.jetbrains.net/issue/TW-2529
(我赞成@sharma的回答和评论,因为它们肯定是提供信息的,但最终不能解决我的问题。)