有一点背景。
在我的环境中,每个都有各自的Subversion存储库(500+)中的大量小型.NET解决方案。我们不是TFS商店,目前正在评估将我们自己的CI流程移至TeamCity。
[而不是让这500多个存储库每5-10分钟轮询一次我们的Subversion服务器,所以我想通过提交后挂接REST http调用启动一个项目构建(就像我们当前的解决方案一样)。然后,我希望TeamCity从SVN更新并开始构建过程。这可能吗?
我看到TeamCity有一个REST API,只是文档很少。我不确定该示例如何与我配置的任何内容相关联。什么是bt7?它如何与我配置的项目联系在一起?
http://buildserver:8111/httpAuth/action.html?add2Queue=bt7
bt7是您的buildTypeId
,它是每个构建配置(作业)的唯一ID。每个项目可以具有许多构建配置。
如果您单击一个项目,然后单击一个特定的构建配置,则您的URL将类似于...
http://teacmtiyserver/viewType.html?buildTypeId=bt208
[如果您要排队等待运行构建配置,只需通过查看URL找出其buildTypeId
,然后您可能可以通过点击所使用的URL尝试运行它。
bt7是构建类型标识符。每个构建配置都有一个。您可以使用rest api获取完整列表,如下所示
http://buildserver:8111/httpAuth/app/rest/buildTypes
如果您在团队城市页面上单击任何构建配置,也可以在URL中看到构建类型。您将看到一个url参数,例如buildTypeId = bt7
[如果您与我同在一条船上,这可能会帮助您编写对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))