我能否从我的msbuild脚本中取消TeamCity构建?

15

TeamCity允许我使用##teamcity交互从我的MsBuild脚本向其报告。我可以使用此功能告诉TeamCity构建已失败,或者确实成功,但我想要告诉它取消构建。有人知道如何做到这一点吗?

我可以使用此功能通知TeamCity失败...

<Message Text="##teamcity[buildStatus status='FAILURE']" Condition="Something==SomeCondition" />

我很想这样做...

<Message Text="##teamcity[buildStatus status='CANCEL']" Condition="Something==SomeCondition" />

我已经尝试了TeamCity Service Tasks,但迄今为止没有什么进展。

编辑:

因此,似乎该功能不可用,尽管可以使用通过 HTTP 请求的解决方法来取消构建。同时,在 TC 网站上有一个功能请求,用于取消构建。


请查看我对TeamCity 2019.1的答案。 - aprelev
4个回答

8
根据 JetBrains 的 问题跟踪器发布页面,自从 TeamCity 2019.1 EAP 1 版本开始,可以使用以下服务消息停止构建:
##teamcity[buildStop comment='canceling comment' readdToQueue='true']

2

从 Teamcity 8.1 开始 (参考来源),可以通过 REST API 取消构建。

引用自 9.x 版本的文档,可以取消当前正在运行的构建。

curl -v -u user:password --request POST "http://teamcity:8111/app/rest/builds/<buildLocator>" --data "<buildCancelRequest comment='' readdIntoQueue='false' />" --header "Content-Type: application/xml"

2
你可以使用未记录的 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

另一篇SO帖子可以告诉您如何从MSBuild发出HTTP请求。
“guest=1”表示我正在使用访客账户,该账户至少需要对您要取消的项目进行“停止构建/从队列中删除”的操作。

1

你能不能直接使用错误任务,这样应该会导致构建的执行停止。


3
是的,我目前使用这个来停止构建,但我们希望在TC中的行为与点击“取消”按钮相同。 - Siy Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接