持续集成CI(一)

什么是持续集成

Continuous Integration, CI

它是一种软件项目管理方法,依据资产库(源码,类库等)的变更自动完成编译、测试、部署和反馈。

持续集成采用”水滴石穿、分而治之“的思想,既然我们不能马上交付一个可用的产品,为什么不随时提供一个可以使用的产品呢。
CI持续集成的基本思想如下图所示:
持续集成CI(一)_第1张图片

为什么要持续集成

持续集成是敏捷软件开发工作当中的一大组成部分。从一轮冲刺到下一轮冲刺,技术团队在“不断前进”的同时持续推出各类增量化功能。不过当开发人员高度专注于添加功能的同时,代码错误有时候也会不期而至、并导致软件无法正常使用。为了阻止此类错误被集成至软件配置管理(简称SCM)方案当中,持续集成服务器则扮演守门人的角色,帮助我们对代码质量进行把关。即使糟糕代码已经被集成到SCM当中,持续集成服务器仍然能够快速告诉我们是哪里出了问题。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

要素

1.   统一的代码库
2.   自动构建
3.   自动测试
4.   每个人每天都要向代码库主干提交代码
5.   每次代码递交后都会在持续集成服务器上触发一次构建
6.   保证快速构建
7.   模拟生产环境的自动测试
8.   每个人都可以很容易的获取最新可执行的应用程序
9.   每个人都清楚正在发生的状况
10. 自动化的部署

如何持续集成

持续集成工具需要具有的功能:
  1 自动构建:无需人工来操作
  2 发现版本库的变更:通过轮询或者定时,触发持续集成发现版本库的变更
  3 反馈机制:在出现问题时,能及时的把问题反馈给正确的人(QA,DEV)
  4 回滚:在出现问题后,拥有回滚能力
  5 纯净的构建环境:每一次都应该把之前的环境删除干净,让每一次构建都是一个新的构建。
  6 完善的集成功能:代码的测试,审查,部署都应该具备。

持续集成不同阶段工具

不同阶段 工具
CI持续集成 Apache Continuum


CruiseControl


Hudson


Jekins


Luntbuild
构建脚本 Ant

Maven
测试工具 JUinit


DbUnit


Floyd


HtmlUnit


JWebUnit


SQLUnit
代码规范审查 sonar

CheckStyle

JavaNCSS

PMD

JDepend
反馈 jabber
                                                               


开源持续集成工具

开源工具 特点
Jenkins Java语言开发而成,且能够在WAR文件下载完成之后使用java –jar jenkins.war命令进行安装;

功能:

持续构建/测试软件项目

以外部方式监控运行任务
Travis CI 最适合新手作为起步平台的持续集成服务器方案

整个安装过程非常轻松,我们只需要接入自己的GitHub账户,提供相关权限并根据项目的实际要求更新travis.yaml文件即可。在文件提交至GitHub之后,一套新的Travis CI即可开始构建。
Buildbot Python语言开发而成

主从服务器
从简单到复杂一路满足用户的实际状况

Buildbot安全需要一台或者更多主服务器外加多从服务器作为配合。
其中主服务器负责监控源代码库的变化,协调各从服务器的操作活动并向用户及开发人员报告结果。
从服务器则可运行多种不同操作系统。
Strider 由Node.JS与JavaScript编写而成,同时利用MongoDB作为后备存储机制

Strider最大的特色在于无与伦比的可定制能力,我们可以亲自动手编写插件以强化其功能
go 由ThoughtWorks公司创建并加以开源的java项目,以流水线的方式实现各类定期执行任务,而这些操作当中的实例会被称为job
Integrity 以Ruby语言编写而成,

Integrity目前只能与Git进行协作。因此如果大家正在使用其它SCM工具,那么Integrity恐怕并不适合

开源集成系统特性(开源 +  非开源)

http://www.oschina.net/project/tag/344/ci

工具 特性
Hudson 1、易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。
2、 易于配置-所有配置都是通过其提供的web界面实现。
3、集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。
4、生成JUnit/TestNG测试报告。
5、分布式构建支持-Hudson能够让多台计算机一起构建/测试。
6、文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
7、插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。
Apache Continuum 1、 与Maven 2.x的紧密集成
2、 与Maven SCM的紧密集成,支持Subversion/CVS/Starteam/Clearcase/Perforce
3、 基于web的容易使用的安装和配置接口
4、 简单的添加新的项目工程的方法
5、 用于 integration, automation and remoting的XML-RPC interface
6、 邮件提醒和IM(即时通讯)提醒IRC/Jabber/MSN
ThoughtWorks Go  
jenkins Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎
基于云的持续集成项目 Travis CI  


参考资料

http://www.cnblogs.com/xing901022/p/4414263.html

http://cloud.51cto.com/art/201508/487605.htm

http://www.oschina.net/project/tag/344/ci

你可能感兴趣的:(持续集成CI(一))