您的位置:首页 > 其它

持续集成CI(一)

2015-09-21 15:06 169 查看

什么是持续集成

Continuous Integration, CI

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

持续集成采用”水滴石穿、分而治之“的思想,既然我们不能马上交付一个可用的产品,为什么不随时提供一个可以使用的产品呢。

CI持续集成的基本思想如下图所示:



为什么要持续集成

持续集成是敏捷软件开发工作当中的一大组成部分。从一轮冲刺到下一轮冲刺,技术团队在“不断前进”的同时持续推出各类增量化功能。不过当开发人员高度专注于添加功能的同时,代码错误有时候也会不期而至、并导致软件无法正常使用。为了阻止此类错误被集成至软件配置管理(简称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
                                                               

开源持续集成工具

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

功能:

持续构建/测试软件项目

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

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

主从服务器

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

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

工具特性
Hudson1、易于安装-只要把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 Continuum1、 与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 
jenkinsJenkins 的前身是 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: