有没有办法自动创建 TeamCity 项目?

Is there a way to automate TeamCity project creation?

我正在使用 TeamCity 9.x。

我要在一个主项目下创建400个子项目。 有没有办法自动创建这些项目?

注意:每个子项目都有一个唯一的 VCS URL。

TeamCity REST API 非常适合做这样的事情。

要创建新项目,您可以使用 curl:

发送包含 XML 新项目描述的 POST 请求
curl -v -u USER:PASSWORD http://teamcity:8111/app/rest/projects --header "Content-Type: application/xml" --data-binary
"<newProjectDescription name='New Project Name' id='newProjectId'><parentProject locator='id:project1'/></newProjectDescription>"

其中 USERPASSWORD 是有效 TeamCity 用户的凭据, teamcity:8111 是 TeamCity 服务器 URL。

或者,可以使用 JSON。应该提供 "Content-Type: application/json" header 并且请求 body 可能类似于

{
  "name":"New Project Name",
  "id":"newProjectId0000",
  "parentProject": {
    "locator":"id:FooProject"
  }
}

要创建一个新的 VCS root,您应该 POST VCS root XML 或 JSON(为 VCS root 详细信息的 GET 请求检索的那个)到 http://teamcity:8111/httpAuth/app/rest/vcs-roots.一个例子 XML:

<vcs-root id="vcsRoot_id_whatever" name="auto-generated-1" vcsName="jetbrains.git">
<project id="FooProject"/>
<properties count="10">
<property name="agentCleanFilesPolicy" value="ALL_UNTRACKED"/>
<property name="agentCleanPolicy" value="ON_BRANCH_CHANGE"/>
<property name="branch" value="refs/heads/master"/>
<property name="teamcity:branchSpec" value="+:*"/>
<property name="url" value="https://github.com/JetBrains/teamcity-docker-agent.git"/>
<property name="usernameStyle" value="USERID"/>
</properties>
</vcs-root>

旧版本是使用 TeamCity REST Api。但是现在 jetbrains 引入了新的 Kotlin DSL。

您将项目设置设置为使用 Kotlin 类型的 Vcs 设置。

然后您只需使用您的编程技能创建一个代码,从 Kotlin dsl 创建您的所有项目。

文档中的更多信息:https://confluence.jetbrains.com/display/TCD10/Kotlin+DSL