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

How to merge and commit to a branch in TeamCity

我想了解如何将 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, but right now I do my deployments from Springloops, and ideally I could keep that setup. I know you can call git as a command line build step,但我无法将所有部分放在一起。特别是如何作为 TeamCity 构建步骤从 dev 合并到 dev.build,然后使用 dev.build 进行构建。

这可能吗?我在想这个完全错了吗?我还有其他选择吗?

Edit/Update

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

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

这样,Springloops 可以寻找直接部署在 TeamCity url(或 TeamCity 代理上)的工件。
这比尝试将这些工件放入 source 代码回购中更好,例如 Git,这不是为此而设计的。

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

是的,这在 TeamCity 中完全可行。事实上,Jetbrains 在博客 post here.

中涵盖了很多内容