【问题标题】:How to merge and commit to a branch in TeamCity如何合并并提交到 TeamCity 中的分支
【发布时间】:2015-04-15 00:02:26
【问题描述】:

我想弄清楚如何将 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. TeamCity 将工件 (DLL) 提交到 dev.build
  5. Springloops 从dev.build 自动部署

我有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 编辑。

【问题讨论】:

    标签: asp.net git deployment teamcity springloops


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为结合自动合并和 git commit 步骤我可以实现它。我不认为 TeamCity Artifact 会起作用,因为在部署时,我需要部署整个 git 存储库,包括构建工件。
    • 虽然这个答案对我最初的问题有效,但从 git 存储库部署构建工件绝对不被视为“最佳实践”。我意识到我真的问错了问题。请参阅我对 WebDeploy 解决方案的编辑。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 2023-03-27
      • 2017-04-26
      • 2013-07-25
      • 2015-08-14
      • 2018-08-24
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多