【问题标题】:How does a "delayed commit" work with source control repositories and CI servers?“延迟提交”如何与源代码控制存储库和 CI 服务器一起工作?
【发布时间】:2019-06-07 21:07:19
【问题描述】:

我想知道“延迟提交”功能如何在未与源代码控制存储库集成的 CI 服务器上工作。从概念上讲,该过程的工作方式如下:

  1. 签入代码更改
  2. CI 服务器构建更改
  3. 如果构建通过,代码将提交到源代码控制存储库
  4. 如果构建失败,代码不会提交到源代码控制存储库

大多数 CI 服务器的工作方式是轮询源代码控制存储库中的更改,然后提取代码。那么在延迟提交场景中,开发人员是否将他们的代码检查到 CI 服务器而不是实际的源代码控制存储库中,然后 CI 服务器将代码传递到存储库?或者,如果构建失败,CI 服务器是否只是回滚更改?

我特别想到了两个持续集成系统。 Team Foundation Server 将在下一个版本中提供此功能,但这很有意义,因为 TFS 中的 Team Build(CI 系统)与源代码控制存储库集成。但是,在 Team City 的情况下,TC 能够连接到任何源代码控制系统,并且不一定与源代码控制存储库集成甚至位于同一服务器上。这是如何工作的?

编辑:在这个问题上打开一个赏金,希望我能得到更多可能的答案。

【问题讨论】:

    标签: visual-studio visual-studio-2008 version-control continuous-integration teamcity


    【解决方案1】:

    通常,您必须使用命令行工具或 IDE 插件来将代码提交到 CI 服务器。该工具将您的更改与所有相关的项目/存储库/用户元数据捆绑在一起,启动构建,然后在一切顺利时提交。

    在 TeamCity 的情况下,看起来服务器实际上将批准消息提交回您的计算机 (from what I can tell from the diagram),然后从那里提交 - 大概这样您就不需要拥有每个用户的 SCM 凭据 -如果您在 TC 服务器上使用 SSH 私钥等,这可能会很复杂。

    但 CI 服务器几乎可以与任何 SCM 系统集成,无论服务器位于何处 — 您只需为其提供正确的凭据即可获得(通常为只读)访问权限。

    【讨论】:

      【解决方案2】:

      它做了这样的事情:


      (来源:kawalerowicz.net

      所以它是执行提交的客户端计算机。不是服务器。在这种情况下,SCM 无关紧要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-28
        • 2018-08-06
        • 2016-01-04
        • 1970-01-01
        • 2017-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多