持续集成CI(一)

什么是持续集成

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恐怕并不适合

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


工具特性
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 


参考资料



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多则惑少则明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值