通过REST调用停止TeamCity构建

时间:2013-04-05 06:07:53

标签: rest teamcity

是否可以通过REST API取消当前正在运行的构建?

我有一个集成,它获取当前正在运行的构建,如果它们失败,我想终止给定类型的构建。我知道如何列出给定类型的失败构建,然后如何传递停止命令?

4 个答案:

答案 0 :(得分:3)

也许不是使用REST API,但如果你看here(在评论部分的底部),就会有一个'未记录的'功能,可以通过HTTP进行。

答案 1 :(得分:2)

您可以使用自it was originally posted以来已更改的未记录的http请求。你现在需要“operationKind = 1”。我使用了powershell运行器来取消当前的构建:

$buildId = %teamcity.build.id%
$uri = "http://teamcity/ajax.html?guest=1&comment=Cancelling+build+for+some+reason&submit=Stop&buildId=$buildId&kill&operationKind=1"
$response = Invoke-WebRequest -UseBasicParsing -Uri $uri

“guest = 1”表示我正在使用访客帐户,该帐户至少需要为您要取消的项目“停止构建/从队列中删除”。

“comment = ...”可以设置为描述您取消的原因。

答案 2 :(得分:1)

不完全是您正在寻找的REST调用,但您只需执行HTTP POST即可:

http://teamcity.my.org/viewLog.html?buildTypeId=bt278&buildId=1352480#

其中:

  • buildTypeId是您项目的ID

  • buildId是要停止的内部版本号

显然,您只能在构建运行时执行此操作。

答案 3 :(得分:0)

从TeamCity 8.1开始,可以使用REST API停止构建:

curl -v -u user:password --request POST "http://localhost:7000/app/rest/buildQueue/<buildLocator>" --data "<buildCancelRequest comment='' readdIntoQueue='true' />" --header "Content-Type: application/xml"