持续集成工具选型报告
1引言
1.1什么是持续集成
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成(Continuous integration)正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
1.2持续集成的价值
1)持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
2)持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
3)持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
持续集成属于集成测试中的一部分。持续集成的目的不是为了发现更多的BUG,而是为了更早的发现BUG。持续集成是高频度的集成,集成过程是不断的将新增的代码纳入集成中,及时发现新增的代码是否对现有的代码产生冲突(编译冲突:编译链接是否存在问题;运行冲突:原有的单元测试是否存在问题等等)。并采用一系列措施和规范,确保冲突尽早的将影响消除,高效快捷的保证系统的稳步前进。
1.3持续集成的原则
免费资源网站源码下载业界普遍认同的持续集成的原则包括:
1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等;
2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;
3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;
4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。
1.4持续集成系统的组成
一个完整的构建系统必须包括:
1)一个自动构建过程,包括自动编译、分发、部署和测试等。 我们已先期搭建了自动编译环境,针对试点项目编写了自动编译脚本。
2)一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。 对于宽带产品部来说,目前我们使用subversion来管理代码库,并先期已要求所有源代码需上传到代码库中。
3)一个持续集成服务器。我们本次选型的对象正是持续集成服务器软件。
1.5持续集成系统的工作原理
持续集成由于要求高频度以及自动化,所以一般采用持续集成服务器软件来实现。持续集成服务器软件的工作原理比较简单。它就像一个监视着源代码配置库的监视器,每次源代码配置库中有新的提交,服务器就会自动检出源代码并启动一次构建任务,并且把构建任务的结果记录下来并通知相关人员。简明扼要的说,持续集成软件本质就是一个定时调度器。
2持续集成工具介绍
CI Server在本质上就是一个定时调度器。我们配置一系列的项目,然后设定一个定时器,让它干一些活,然后通知大家。而我们除了基本的编译和通知功能以外,我们还有很多其它的需求,在我们公司里,选择CI Server主要考虑以下几点:
∙首选免费和开源的,便于功能扩展和二次开发
∙需要同时兼容Windows和Linux两种操作系统
∙支持基于bat和shell脚本的集成
∙必须与现行的配置管理工具subversion无缝集成
∙具有一定的安全性和可靠性,要能进行权限配置
∙便于与其他工具的集成,如单元测试、自动测试工具
∙能够对历史数据进行统计和分析,并出具分析报告
∙便于安装、部署与维护
针对以上几点要求,我们对目前主流的CI Server进行了初步筛选,圈定了Cruise Control、Jenkins和
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论