TeamCity 2018升级后带参数触发构建失败,REST API使用求助
解决TeamCity 2018 REST API带参数触发构建的问题
我之前帮团队迁移TeamCity API的时候也踩过和你一样的坑,先给你理清核心问题:你之前用的locator参数是用来查询构建队列的,不是用来创建新构建的,所以才会出现“提示成功但实际没触发”的情况——你其实只是发起了一个查询请求,并没有提交新的构建任务。
下面是正确的带多参数触发构建的步骤:
1. 核心请求方式:POST而非GET
要触发新构建,必须向/app/rest/buildQueue发送POST请求,并且在请求体中指定构建类型和参数,而不是用GET请求带locator参数。
2. 构建请求体(JSON格式推荐)
请求体需要包含构建类型的标识(优先用ID,避免名称重复的问题)和参数列表。这里给你一个支持多参数的示例:
{ "buildType": { "id": "Your_Build_Type_ID" // 替换成你的构建配置ID }, "parameters": { "param": [ { "name": "param_name_1", // 构建配置中定义的参数名 "value": "param_value_1" }, { "name": "param_name_2", "value": "param_value_2" } ] } }
如何获取构建类型ID?
进入你的TeamCity构建配置页面,URL中的buildTypeId参数就是(比如https://server/viewType.html?buildTypeId=MyProject_MyBuild里的MyProject_MyBuild),或者在构建配置的「General Settings」页面也能看到这个ID。
3. 完整的curl示例(方便测试)
用curl命令测试的话,记得带上认证信息(用户名密码或者Token),指定Content-Type为application/json:
curl -u your_username:your_password -H "Content-Type: application/json" -X POST -d '{ "buildType": { "id": "MyProject_WebAppBuild" }, "parameters": { "param": [ {"name": "DEPLOY_ENV", "value": "staging"}, {"name": "BUILD_NUMBER", "value": "v2.3.1"} ] } }' https://your-teamcity-server/app/rest/buildQueue
4. 常见问题排查
- 确认请求方法是POST:GET请求只会查询队列,不会创建新构建,这是你之前遇到“提示成功但没触发”的核心原因。
- 参数名要完全匹配:包括参数的前缀(比如环境变量参数可能是
env.DEPLOY_ENV,要和构建配置里的定义一致)。 - 用构建ID而非名称:构建名称可能重复,ID是唯一标识,避免触发错误的构建。
- 检查权限:确保你的账号有触发该构建配置的权限,认证信息正确。
内容的提问来源于stack exchange,提问作者CapBird
相关产品推荐
相关产品推荐

