You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过TeamCity REST API触发双VCS根指定版本的构建?

TeamCity REST API触发多VCS根构建并指定各版本的解决方案

我需要通过TeamCity REST API触发一个包含2个VCS根的构建配置,要求为每个VCS根分别指定特定版本。官方文档只给出了单VCS根的示例,尝试用lastChanges字段传递多个变更ID时遇到400错误:

Responding with error, status code: 400 (Bad Request).
Details: jetbrains.buildServer.server.rest.errors.BadRequestException: Several non-personal changes are submitted, only one can be present
Invalid request. Please check the request URL and data are correct.

但在TeamCity UI中手动指定两个版本可以正常触发构建,使用的TeamCity版本为2022.04.3(build 108706)。

问题原因

lastChanges字段仅支持指定单个变更,无法用于多VCS根场景下的版本指定,这就是报错的核心原因。

正确解决方案

使用revisions字段替代lastChanges,为每个VCS根单独配置版本信息。请求体示例如下:

{
  "buildType": {
    "id": "ExampleConfiguration"
  },
  "revisions": {
    "revision": [
      {
        "vcsRootId": "VCS_ROOT_1_ID",
        "revision": "abc123def456"
      },
      {
        "vcsRootId": "VCS_ROOT_2_ID",
        "revision": "xyz789uvw012"
      }
    ]
  }
}

字段说明

  • vcsRootId:对应VCS根的唯一ID,可从TeamCity UI的VCS根设置页面获取(路径:项目设置 → VCS根 → 查看对应根的ID)
  • revision:需要指定的具体版本哈希值(Git/SVN等版本控制系统的提交ID)

如果需要同时指定分支,可在每个revision对象中添加branchName字段:

{
  "vcsRootId": "VCS_ROOT_1_ID",
  "branchName": "refs/heads/release-v1.0",
  "revision": "abc123def456"
}

验证逻辑

TeamCity UI中手动指定多VCS版本触发构建时,底层正是通过revisions字段传递版本信息,因此该方法与UI操作逻辑完全一致,可正常触发指定版本的构建。

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:25:21