如何通过TeamCity REST API修改构建配置的checkoutDirectory设置?
如何通过TeamCity REST API更新构建配置的检出目录(checkoutDirectory)
核心误区说明
你之前的操作方向有误:检出目录(checkoutDirectory)不属于构建配置的settings或parameters,它是绑定在「VCS根与构建配置的关联条目」上的专属设置,需要通过专门的VCS根条目API来操作。
具体操作步骤
1. 获取目标构建配置的VCS根条目列表
先发送GET请求,定位到你要修改的VCS根对应的条目ID:
curl -u 用户名:密码 "http://你的TeamCity服务器地址/app/rest/buildTypes/<构建配置ID>/vcs-root-entries"
返回结果会包含当前构建配置关联的所有VCS根信息,找到目标VCS根的id字段,以及当前的checkoutDirectory值。
2. 发送PUT请求更新检出目录
针对找到的VCS根ID,发送PUT请求修改checkoutDirectory:
JSON格式示例:
curl -u 用户名:密码 -X PUT -H "Content-Type: application/json" -d '{ "checkoutDirectory": "/你的新检出路径" }' "http://你的TeamCity服务器地址/app/rest/buildTypes/<构建配置ID>/vcs-root-entries/<VCS根ID>"
XML格式示例:
curl -u 用户名:密码 -X PUT -H "Content-Type: application/xml" -d '<vcs-root-entry checkoutDirectory="/你的新检出路径"/>' "http://你的TeamCity服务器地址/app/rest/buildTypes/<构建配置ID>/vcs-root-entries/<VCS根ID>"
关于你提到的其他疑问
- 为什么
/settings返回结果没有ID? 这不是bug:settings是构建配置的附属属性集合,本身没有独立标识;而parameters是键值对结构,每个参数以自身名称作为ID,两者设计逻辑不同,属于正常情况。 - 为什么UI里是单个构建配置的设置? 因为该设置是「VCS根在当前构建配置中的专属配置」,而非VCS根的全局设置,所以需要通过构建配置下的VCS根条目API来修改。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

