持续集成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 |
开源持续集成工具
开源工具 | 特点 |
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.htmlhttp://cloud.51cto.com/art/201508/487605.htm
http://www.oschina.net/project/tag/344/ci
相关文章推荐
- iOS沙盒的查看和使用
- Linux下Firefox和chrome浏览器flash插件的安装
- cocos2d-x 把资源文件保存到本地手机上,调用JNI接口,ANdroid的
- maven--私服的搭建(Nexus的使用)
- LibRTMP源代码分析6:建立网络流
- js中splice的用法
- ArcSDE数据库连接(直连、服务连)与GT_Geometry存储配置图解
- OCP-V13-687
- Swift学习-运算符(二)
- SQLite使用
- Sring面试题
- Windows下 maven3.0.4的安装步骤+maven配置本地仓库
- 自组织临界理论
- 学海明码,就来看看海明的演讲吧--你和你的研究(You and Your Research)
- Power Provisioning for a Warehouse-sized Computer(总结)
- 键值观察之KVO——即观察者模式的应用 补充与拓展
- QT用API获得文件的版本信息
- ios 数据存储之plist
- 从GitHub中获取Spring源码
- Loadrunner不能调用IE解决方法大全