你好DevOps传播者!
首先,感谢this answer,我能够使用以下curl成功取消单个TeamCity构建:
curl http://teamcity:8111/app/rest/buildQueue/buildType:<buildId> \
-X POST -u *** \
-H 'Content-Type: application/json' -d '{
"buildCancelRequest": {
"comment": "This build was cancelled.",
"readdIntoQueue": "false"
}
}'
但是,我的想法是通过TeamCity REST API取消特定项目中的多个版本。我尝试了以下方法:
curl http://teamcity:8111/app/rest/buildQueue/project:<projectId>,count:<n> \
-X POST -u *** \
-H 'Content-Type: application/json' -d '{
"buildCancelRequest": {
"comment": "Only one build was cancelled.",
"readdIntoQueue": "false"
}
}'
不幸的是,我失败了,因为该项目中只有一个构建被取消。我知道我可以发送该请求的次数与项目中构建的次数一样多,但是这种丑陋的解决方法!我想做对了!有人可以告诉我如何使用TeamCity REST API取消项目中的所有版本吗?
答案 0 :(得分:0)
由于时间紧迫,没有给出答案,我被迫使用变通办法,因此基于this answer,我准备了以下请求:
curl http://teamcity:8111/app/rest/buildQueue/project:<projectId>,count:[1-n] \
-X POST -u *** \
-H 'Content-Type: application/json' -d '{
"buildCancelRequest": {
"comment": "Multiple builds will be cancelled.",
"readdIntoQueue": "false"
}
}'
您只需将 n 替换为所选项目中已有的内部版本号,即可全部取消。它基本上会发送多个请求,这意味着停止所有排队的构建。
但是,如果要停止已经运行的构建,则需要使用其他端点:
curl http://teamcity:8111/app/rest/builds/project:<projectId>,running:true,count:[1-n] \
-X POST -u *** \
-H 'Content-Type: application/json' -d '{
"buildCancelRequest": {
"comment": "Already running builds will be stopped.",
"readdIntoQueue": "false"
}
}'
如果您知道每个项目仅运行一个构建,则可以跳过count:[1-n]
定位符,仅发送一个请求,该请求将停止所选项目中当前正在运行的构建。