首页 文章

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

提问于
浏览
2

我有一些集成测试,由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 回答

  • 7

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

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

  • 3

    你应该可以通过build Interaction scripts来做到这一点 .

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

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

    Look at this

  • 0

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

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

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

相关问题