“延迟提交”如何与源代码管理存储库和CI服务器一起使用?

时间:2010-01-15 00:39:46

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

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

  1. 签入代码更改
  2. CI服务器构建更改
  3. 如果构建通过,则代码将提交给源代码控制存储库
  4. 如果构建失败,则代码不会提交到源代码控制存储库
  5. 大多数CI服务器通过轮询源控件存储库进行更改然后下拉代码来工作。那么在延迟提交场景中,开发人员是否将其代码检入CI服务器而不是实际的源控制存储库,然后CI服务器将代码传递给存储库?或者,如果构建失败,CI服务器只会回滚更改吗?

    我正在考虑两个特别是持续集成系统。 Team Foundation Server将在下一版本中提供此功能,但这是有道理的,因为TFS中的Team Build(CI系统)与源代码控制存储库集成在一起。但是,对于Team City,TC可以连接到任何源控制系统,并且不一定与源控制存储库集成甚至在同一服务器上。这是怎么回事?

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

它做了类似的事情:

TeamCity Pre-test commit http://kawalerowicz.net/ch4_11.gif

所以它是进行提交的客户机。不是服务器。在这种情况下,SCM并不重要。