【发布时间】:2017-05-17 07:05:08
【问题描述】:
我正在使用 TeamCity 9.x。
我必须在一个主项目下创建 400 个子项目。 有没有办法自动创建这些项目?
注意:每个子项目都有一个唯一的 VCS URL。
【问题讨论】:
标签: teamcity build-automation devops teamcity-9.0
我正在使用 TeamCity 9.x。
我必须在一个主项目下创建 400 个子项目。 有没有办法自动创建这些项目?
注意:每个子项目都有一个唯一的 VCS URL。
【问题讨论】:
标签: teamcity build-automation devops teamcity-9.0
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>"
其中 USER 和 PASSWORD 是有效 TeamCity 用户的凭据,
teamcity:8111 是 TeamCity 服务器 URL。
或者,可以使用 JSON。应提供“Content-Type: application/json”标头,请求正文可能类似于
{
"name":"New Project Name",
"id":"newProjectId0000",
"parentProject": {
"locator":"id:FooProject"
}
}
要创建一个新的 VCS 根,您应该将 VCS 根 XML 或 JSON(类似于为获取 VCS 根详细信息的 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>
【讨论】:
Invoke-RestMethod,请参阅此处的文档:msdn.microsoft.com/powershell/reference/5.1/…
旧版本是使用 TeamCity REST Api。但现在 jetbrains 推出了新的 Kotlin DSL。
您将项目设置设置为使用 Kotlin 类型的 Vcs 设置。
然后,您只需使用您的编程技能创建代码,即可从 Kotlin dsl 创建您的所有项目。
文档中的更多信息:https://confluence.jetbrains.com/display/TCD10/Kotlin+DSL
【讨论】: