如何合并和提交TeamCity中的分支

时间:2015-02-13 20:26:18

标签: asp.net git deployment teamcity springloops

我想弄清楚如何将TeamCity构建与Springloops部署集成。

假设我有一个名为api的Git仓库,它有两个分支devdev.build

api
|-- dev
|-- dev.build

我在dev上设置了带有VCS触发器的TeamCity,以便在提交时构建。然后,它会创建我想要用于部署的工件。 (在这种情况下,它是一个ASP.NET网站,其中包含我想用于部署的各种DLL)。

我也有Springloops,我现在用于部署。理想情况下,我想从dev.build部署。有没有办法将构建工件从TeamCity提交到dev.build分支,然后从该分支部署?

基本工作流程是

  1. 将代码提交至dev
  2. TeamCity将dev合并到dev.build
  3. TeamCity从dev.build
  4. 构建
  5. TeamCity将工件(DLL)提交到dev.build
  6. Springloops从dev.build
  7. 自动部署

    我有read arguments against storing build binaries/artifacts in git,但是现在我从Springloops进行部署,理想情况下我可以保留该设置。我知道你可以call git as a command line build step,但我无法把所有的东西放在一起。特别是如何从dev合并到dev.build作为TeamCity构建步骤,然后使用dev.build进行构建。

    这有可能吗?我是否认为这完全错了?我还有其他选择吗?

    修改/更新

    我发现切换到使用WebDeploy部署TeamCity工件(WebDeploy包)而不是通过Springloops从git存储库提交构建工件会更聪明。我希望停止使用Springloops进行部署,并通过TeamCity构建任务通过WebDeploy直接部署到我的IIS站点。这种方式构建工件(\bin文件夹)将不在git中,也可以使用web.config转换,而不是在生产IIS站点上手动进行web.config编辑。

2 个答案:

答案 0 :(得分:2)

我建议的另一个选项是build a TeamCity Artifact,它可以将你的工作结果存储在一个集成的轻量级构建工件库中。

这样,Springloops可以查找工件直接部署在TeamCity网址(或TeamCity代理)上。
这比将试图将这些工件放在像Git这样的代码库中更好地扩展,而不是为此做的。

关于TeamCity构建本身,它可以由两个作业组成(一个依赖于另一个),第一个作业使用automatic merge feature,以便将dev合并到dev.build

答案 1 :(得分:1)

是的,这在TeamCity中是完全可行的。事实上,Jetbrains在博文here中涵盖了很多内容。