【问题标题】:Continuous integration using git branches使用 git 分支进行持续集成
【发布时间】:2013-07-26 10:20:48
【问题描述】:

对于每个故事,我们都会在 Git 中使用一个分支。这在本地工作得很好,但在最终确定功能时会出现问题,因为我们(当前)只将 master 推送到我们的测试环境(IIS)。请注意,我们在 TFS 旁边使用 Git,因为 TFS 仍然是我们的主要 VCS。

我们正在使用 TeamCity 来构建我们所有的分支机构。如何在不污染主分支的情况下在测试机器上测试和审查代码?为每个分支创建多个 IIS 应用程序?这可以是自动化的,但似乎是做作的。

为了澄清,我们需要能够在我们的测试环境中同时测试不同的版本。

【问题讨论】:

  • 考虑同时添加 [tfs] 和 [teamcity] 标签。
  • 澄清一下,我们需要能够在我们的测试环境中同时测试不同的版本。
  • 如果你同时使用 Git 和 Teamcity,为什么还需要 TFS?如果您没有将 TFS 用于其完整的应用程序生命周期管理 (ALM) 套件,而仅将其用于版本控制,为什么不干脆摆脱它呢?在我看来,TFS 是一个远不如 Git 的版本控制系统。有关 ALM 和版本控制都反对 TFS 的有力论据,请参阅 Derek Hammer 的 TFS is destroying your development capacity
  • 另外,这个问题可能也适合Programmers,因为它涉及软件开发过程。
  • 出于程序原因,我们需要 TFS;发布过程的其余部分仍以 TFS 为模型。

标签: git iis tfs continuous-integration teamcity


【解决方案1】:

总而言之,我在 IIS 中创建了多个应用程序,一个用于团队中的每个开发人员(开发和测试),然后 3 个插槽仅用于测试目的。

在 teamcity 中,我们会针对每个分支运行构建,但 不要 不再自动部署。原因是我们允许拉取我们的构建,但不强制升级。

当功能分支上的所有开发工作完成后,我们会合并到 master 中,然后立即与 TFS 同步,以便我们的 master 分支同步。这允许我们将每个变更集的每个功能合并到下一个阶段。

【讨论】:

  • 很抱歉回答我自己的问题,但我认为这是最好的参考。如果不是,请更正。
【解决方案2】:

我想你正在寻找--dry-run开关:

-n, --dry-run
做所有事情,除了实际发送更新。

git push --dry-run ...

【讨论】:

    【解决方案3】:

    请注意,同一应用程序有多个测试版本可能会非常混乱!!

    你可以采用GitHub Flow之类的东西:

    • 每个功能一个分支
    • 功能完成后,将其部署到测试环境
    • 如果一切正常,您可以将该功能合并到 master

    如果这对您来说不是一个可行的解决方案,我看到的唯一选择是部署多个 IIS 应用程序。这可以使用WebDeploy 之类的工具相对轻松地完成,但您必须考虑使用“清理策略”来删除过时的 Web 应用程序。

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多