持续集成的三大支柱

Pillars of CI

Pillars of CI

以下资讯翻译自dzone

持续集成(Continuous Integration, 简称CI),是由持续编译、测试、检查和部署组成的一个过程。在任何一个CI环境中,这意味着,在版本控制库中,每一代码变更,就会运行一次构建(build)。

Martin Fowler是这样描述CI的:

持续构建是一种软件开发实践,团队成员要频繁地集成自己的工作成果,一般,每个人员至少是按照天来进行集成的,这样,一天就会有多次集成。每次集成都通过自动构建来验证,以便尽可能快的发现错误。

许多团队发现这种方法能够显著地减少集成的问题,更加快速地开发“聚合式”的软件。CI是一个过程,同时这个术语和三大重要工具联系在一起。就如图片所示,CI的三大支柱就是:

  1. 版本控制库,例如Subversion、CVS
  2. CI服务器,例如Hudson、Cruise Control
  3. 自动构建过程,例如Ant、Nant

接下来,我们就逐个地、详细地看看这三个支柱:

版本控制库

版本控制库,也就是源代码管理(Source Code Management,简称SCM),在任何一个开发环境中,其都扮演了关键的角色。在一个成功的CI过程中,版本控制库也同样扮演了重要的角色。对于团队而言,SCM处在一个中心位置,用来存储项目中每一样成果,其强制性地要求团队一定要把每样东西都放到仓库里,包括构建脚本,属性文件,数据库脚本,编译软件所使用的所有库文件等等。

CI服务器

我们需要一个自动的过程,能够监视版本控制库,并在发现变化时运行构建。现在已经有了可用的开源的或者商业的CI服务器。他们有一些类似的地方,例如在基本的配置、监视版本控制库、在变化发生时执行构建。

通常使用到的开源CI服务器有:Cruise Control,Continuum和Hudson。Hudson比较有“意思”,因为它配置简单,编译用的插件能够和测试和静态分析工具进行整合。

自动构建

CI过程差不多就是频繁构建软件,这个过程要通过build来完成。截止到目前,稳健的构建策略是成功的CI过程重要一个方面。构建的缺失会导致CI的失败。

现在我们已经看到了在CI过程中重要的工具,那就看看对于开发人员来说,一个典型的CI场景应该是什么样子的?

  1. 配置CI服务器从版本控制库中获取变更内容
  2. 开发人员把代码提交到版本控制库中
  3. CI服务器发现变化,从版本控制库中重新找回最新的代码
  4. 这引发了CI服务器用指定的target和option调用构建脚本
  5. 如果有配置,一旦有特定的、重要的事件发生,CI服务器就会发出一封E-Mail给指定的接收者。
  6. CI服务器不断的获取变更

为什么CI重要?这是一个经常被问到的问题,以下就是关于这项技术的要点:

  1. 频繁构建软件极大增加早早发现缺陷的可能性,
  2. 扩大了缺陷的能见度
  3. CI保证了每次变化都有一个准备好用于生产的软件
  4. CI通过每次变更时进行构建,也保证了减少了集成问题的风险
  5. CI服务器也可以配置运行基础检查,协助开发团队找到潜在的BUG,糟糕的编程实践,自动检查代码标准,对正在编写的代码的质量提供有价值的反馈

Leave a comment

Your comment