一点背景。
在我的环境中,我们在他们自己的Subversion存储库(500+)中有大量的小型.NET解决方案。我们不是TFS商店,目前正在评估将我们的本土CI过程转移到TeamCity。
我不想每隔5-10分钟对这些500+ repos轮询我们的Subversion服务器,而是希望通过post-commit-hook REST http调用启动Project build(就像我们当前的解决方案那样)。然后,我希望TeamCity从SVN更新并开始构建过程。这可能吗?
我看到TeamCity有一个REST API,只是文档很稀疏。我不确定这个例子与我配置的任何东西有什么联系。什么是bt7?它与我配置的项目有什么关系?
http://buildserver:8111/httpAuth/action.html?add2Queue=bt7
答案 0 :(得分:5)
bt7是构建类型标识符。每个构建配置都有一个。您可以使用其余api获取完整列表,如下所示
http://buildserver:8111/httpAuth/app/rest/buildTypes
如果您点击团队城市页面上的任何构建配置,您还可以在网址中看到构建类型。您将看到一个url参数,例如buildTypeId = bt7
答案 1 :(得分:2)
bt7是您的buildTypeId
,它是每个构建配置(作业)的唯一ID。每个项目都可以有许多构建配置。
如果您单击一个项目然后单击进入特定的构建配置,您的URL将类似于......
http://teacmtiyserver/viewType.html?buildTypeId=bt208
如果要将构建配置排队以运行,只需查看URL找到buildTypeId
,然后您可以尝试通过点击您使用的URL来运行它。
答案 2 :(得分:0)
如果您与我同在一条船上,这可能会帮助您编写对Team-City的REST调用-尤其是围绕触发构建和监视构建。
Bearer Token
。
const TC_CLIENT = {
async postBuild() {
const request = {
buildType: {
id: "YOUR_BUILD_TYPE_ID"
},
properties: {
property: [{
name: "balh",
value: "blah blah"
},
{
name: "balh",
value: "blah blah"
}
]
}
};
const response = await fetch("http://yourtcserver/app/rest/buildQueue", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: "Bearer YOUR_TC_TOKEN"
},
body: JSON.stringify(request)
});
return await response.json();
},
async getBuildStatus(buildId) {
const response = await fetch(
"http://yourtcserver/app/rest/buildQueue/" + buildId, {
method: "GET",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: "Bearer YOUR_TC_TOKEN"
}
}
);
return await response.json();
}
};
let sampleBuild = TC_CLIENT.postBuild();
console.log("Status", TC_CLIENT.getBuildStatus(sampleBuild.id))