能否通过TeamCity REST API重建指定ID的成功构建?
通过TeamCity REST API重建指定版本的构建
没问题,我来帮你搞定这个需求——TeamCity的REST API确实支持复刻指定构建(也就是和UI里点「使用相同版本运行构建...」完全一致的操作),具体步骤如下:
第一步:获取原构建的关键信息
首先你需要拿到ID为104421的构建的详细数据,特别是它的构建类型ID、自定义参数以及VCS版本号。用GET请求调用API:
GET http://<你的TeamCity服务器地址>/app/rest/builds/id:104421
替换掉<你的TeamCity服务器地址>,记得带上身份验证(可以用用户名密码或者令牌)。从返回的JSON响应里,你需要提取:
buildType.id:也就是这个构建所属的构建配置IDproperties.property:原构建使用的所有自定义参数(键值对形式)vcs-root-entries下每个VCS根的id和对应的revision:这是保证复用原版本代码的关键
第二步:发起复刻构建请求
接下来用POST请求把构建加入队列,请求地址是:
POST http://<你的TeamCity服务器地址>/app/rest/buildQueue
请求头要设置Content-Type: application/json,请求体需要包含刚才提取的信息,示例如下:
{ "buildType": { "id": "提取到的构建配置ID" }, "properties": { "property": [ { "name": "param1", "value": "原构建中param1的值" }, { "name": "param2", "value": "原构建中param2的值" } ] }, "vcs-root-entries": [ { "vcs-root": { "id": "VCS根ID1" }, "revision": "原构建中该VCS根的版本号" }, { "vcs-root": { "id": "VCS根ID2" }, "revision": "原构建中该VCS根的版本号" } ] }
关键注意点:
- 如果你的构建没有自定义参数,可以省略
properties部分,但必须指定VCS的revision,否则TeamCity会拉取最新代码,而不是复用原构建的版本 - 确保你的API账号拥有该构建配置的「Build」权限,否则请求会被拒绝
- 可以用
curl快速测试,比如:# 先获取原构建信息 curl -u 用户名:密码 http://your-teamcity-server/app/rest/builds/id:104421 > build-details.json # 整理好请求体后发起构建 curl -u 用户名:密码 -H "Content-Type: application/json" -X POST -d @rebuild-request.json http://your-teamcity-server/app/rest/buildQueue
这个方法完全复刻了UI里「使用相同版本运行构建」的逻辑,会使用和原构建104421完全相同的参数、代码版本来启动新构建。
内容的提问来源于stack exchange,提问作者Yaric Y
相关产品推荐
相关产品推荐

