持续集成工具选型报告

时间:2024.5.9

持续集成工具选型报告

持续集成工具选型报告

1 引言

1.1 什么是持续集成

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

持续集成(Continuous integration)正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

1.2 持续集成的价值

1) 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节

省时间、费用和工作量;

2) 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能

第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;

3) 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重

要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

持续集成属于集成测试中的一部分。持续集成的目的不是为了发现更多的BUG,而是为了更早的发现BUG。持续集成是高频度的集成,集成过程是不断的将新增的代码纳入集成中,及时发现新增的代码是否对现有的代码产生冲突(编译冲突:编译链接是否存在问题;运行冲突:原有的单元测试是否存在问题等等)。并采用一系列措施和规范,确保冲突尽早的将影响消除,高效快捷的保证系统的稳步前进。

1.3 持续集成的原则

业界普遍认同的持续集成的原则包括:

1) 需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM

Rational ClearCase、CVS、Subversion 等;

2) 开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本

地;

3) 需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改

来直接触发,也可以定时启动,如每半个小时构建一次;

4) 必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,(Rev.B-20080829) 2013-04-171(12)

持续集成工具选型报告

需要手动启动一次构建。

1.4 持续集成系统的组成

一个完整的构建系统必须包括:

1) 一个自动构建过程,包括自动编译、分发、部署和测试等。 我们已先期搭建了自动编译环境,

针对试点项目编写了自动编译脚本。

2) 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。

对于宽带产品部来说,目前我们使用subversion来管理代码库,并先期已要求所有源代码需上传到代码库中。

3) 一个持续集成服务器。我们本次选型的对象正是持续集成服务器软件。

1.5 持续集成系统的工作原理

持续集成由于要求高频度以及自动化,所以一般采用持续集成服务器软件来实现。持续集成服务器软件的工作原理比较简单。它就像一个监视着源代码配置库的监视器,每次源代码配置库中有新的提交,服务器就会自动检出源代码并启动一次构建任务,并且把构建任务的结果记录下来并通知相关人员。简明扼要的说,持续集成软件本质就是一个定时调度器。

(Rev.B-20080829) 2013-04-172(12)

持续集成工具选型报告

2 持续集成工具介绍

CI Server在本质上就是一个定时调度器。我们配置一系列的项目,然后设定一个定时器,让它(Rev.B-20080829) 2013-04-173(12)

持续集成工具选型报告

持续集成工具选型报告

干一些活,然后通知大家。而我们除了基本的编译和通知功能以外,我们还有很多其它的需求,在我们公司里,选择CI Server主要考虑以下几点:

?

?

?

?

?

?

?

? 首选免费和开源的,便于功能扩展和二次开发 需要同时兼容Windows和Linux两种操作系统 支持基于bat和shell脚本的集成 必须与现行的配置管理工具subversion无缝集成 具有一定的安全性和可靠性,要能进行权限配置 便于与其他工具的集成,如单元测试、自动测试工具 能够对历史数据进行统计和分析,并出具分析报告 便于安装、部署与维护

针对以上几点要求,我们对目前主流的CI Server进行了初步筛选,圈定了Cruise Control、Jenkins和

2.1 Cruise Control

CruiseControl是CI Server的老者,诞生已是多年,在许多方面,CruiseControl服务器已经成为持续集成实践的同义词。而现在,CruiseControl已发展成为一个家族式系统,包括CruiseControl.java、CruiseControl.net、CruiseControl.ruby等适应不同语言环境的实现。但可惜的是目前没有专门针对嵌入式C语言的版本。

官方地址:/

2.2 Jenkins(Hundson)

Jenkins原名Hudson,是CI Server的后起之秀,目前恐怕是使用最多的一个CI Server了。Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。

官方地址:http://jenkins-ci.org/

2.3 Apache Continuum

Continuum 是最新的 CI 服务器之一,也是值得关注的一个新进入者。Continuum 的安装和配置很简单:只要下载和释放 ZIP 文件,运行命令行程序,就可以运行了。基于 Web 的界面使得配置项目很容易。而且,还不需要安装 Web 服务器,因为 Continuum 内置了 Jetty Web 服务器。并且,Continuum 可以作为 Windows 服务运行,还在应用程序的某些部分嵌入了上下文敏感的文档,从而提供了很多帮助。

官方地址:/

(Rev.B-20080829) 2013-04-174(12)

持续集成工具选型报告

3 三种持续集成工具对比

持续集成工具选型报告

通过以上的对比,可以发现Jenkins从中脱颖而出,其各方面指标均达到了我们的要求。接下来需要下载、安装和部署Jenkins来进行试用。

4 Jenkins试用

4.1 下载

通过如下地址,可下载到Jenkins最新的版本和源代码。 Windows版:/windows/latest Opensuse Linux版:/opensuse/ 源代码:https://github.com/jenkinsci/jenkins/

4.2 安装和部署

在Windows编译服务器上,安装Jenkins有两种方式:

1. 自行安装JDK和Java Web服务器(如Tomcat),然后下载打包后的.war文件,并将war

包部署到Web服务器下。

2. 直接下载windows安装版本,通过安装程序安装完成后,Jenkins会自动以windows服务

的形式启动并运行。

两种安装方式均很方便,安装完成后打开浏览器地址,我们看到了Jenkins的主页面:

(Rev.B-20080829) 2013-04-175(12)

持续集成工具选型报告

可以看到,Jenkins已经进行了部分本地化的工作,对中文的支持很好。

4.3 新建项目

接下来新建项目:

持续集成工具选型报告

源代码管理,选择subversion,在Jenkins默认安装下已经自动安装了subversion的访问插件。 (Rev.B-20080829) 2013-04-176(12)

持续集成工具选型报告

持续集成工具选型报告

接下来设置触发器,“Poll SCM”表示对SCM进行定期轮询,我们设置每隔1小时自动对SVN进行一次轮询,如有有代码更新,则执行构建。

由于GPON OLT线卡部分目前已有一套完备的代码及自动编译脚本,因此我们选择使用该项目进行试用。这里的构建,我们需要Jenkins自动执行bat批处理文件,选择第一项“Excute Windows Batch command”即可。同时我们可以看到,Jenkins还支持Linux下的shell脚本、Ant脚本和Maven脚本。

持续集成工具选型报告

最后,在构建后操作选择中勾选“E-mail Notification”,可使Jenkins在编译失败后发生不稳定的编译时向特定的地址发送邮件通知。

4.4 参数配置

进入Jenkins的系统管理,可以看到其所有的可配置选项:

(Rev.B-20080829) 2013-04-177(12)

持续集成工具选型报告

持续集成工具选型报告

进入“系统配置”,可对Jenkins进行全局参数的设置。

如权限设置,我们可通过如下的设置完成:

持续集成工具选型报告

通过以上设置后,匿名用户将只能查看轮询和编译结果,只有系统管理员admin才能进行配置、(Rev.B-20080829) 2013-04-178(12)

持续集成工具选型报告

持续集成工具选型报告

维护等操作。

4.5 插件管理

通过Jenkins强大的插件管理功能,可以使其适应多种不同的执行环境。Jenkins的插件安装可以采用自动下载安装和手动下载,因自动编译服务器无法直接访问外网,我们采用手工下载方式,安装了针对邮件发送和批处理执行的两个插件。

插件安装后我们可以发现,在系统配置中可以编辑邮件的内容:

持续集成工具选型报告

插件资源地址:https:///display/JENKINS/Plugins

4.6 运行监控

接下来,我们对GPON OLT线卡项目进行了为期三天的运行监控,结果如下:

持续集成工具选型报告

在采用每小时轮询的情况下,该项目在20xx年12月21日至23日的三天时间里,持续集成编(Rev.B-20080829) 2013-04-179(12)

持续集成工具选型报告

译得到了 12个版本。每个版本的SVN日志记录可以在“变更集”中查看到。

4.7 Linux下的部署和试用

接下来在OpenSuse Linux环境下部署和试用Jenkins。

这次我们直接使用war包的方式,手动部署。需要安装如下内容:

?

? JDK,我们找到对应的64位的JDK,下载后安装(jdk-6u30-linux-x64.bin); 运行容器,我们选择Apache Tomcat,下载后解压(apache-tomcat-6.0.35.tar.gz); 安装和部署完毕后,将jenkins.war拷贝到Tomcat的webapps目录下,然后启动tomcat。

持续集成工具选型报告

至此,我们完成了Linux下Jenkins的安装和部署。

接下来我们使用AN5516-01-b项目作为测试项目,对其进行持续集成的试用。

访问地址如下: http://10.90.25.18:8080/jenkins/

5 试用结果

经过Windows和OpenSuse Linux下的使用,对照之前提出的选型原则,我们得到如下结果: ? 首选免费和开源的,便于功能扩展和二次开发

Jenkins为免费和开源系统,可从其官方提供的地址下载到源代码。

? 需要同时兼容Windows和Linux两种操作系统

经过WindowsServer2008和OpenSuse Linux下的试用,可确认Jenkins对这两种操作系统均可兼容。

? 支持基于bat和shell脚本的集成

通过试用,我们分别在两个项目中使用bat和shell脚本进行集成,均和正常执行。

(Rev.B-20080829) 2013-04-1710(12)

持续集成工具选型报告

? 必须与现行的配置管理工具subversion无缝集成

Jenkins默认配置下,以通过SVNkit接口提供了对subversion的无缝集成,并支持对subversion的定时轮询检查、日志抓取等功能。

? 具有一定的安全性和可靠性,要能进行权限配置

通过配置,Jenkins可对访问用户进行权限控制,使匿名用户只能查看,而只有管理员才具有配置的权限。

如果需要更复杂的用户权限配置,可通过安装相应的用户管理插件来实现。

? 便于与其他工具的集成,如单元测试、自动测试工具

目前Jenkins支持主流的Ant和Maven的集成,而对于嵌入式开发,由于本身的测试和集成工具比较少,Jenkins无法直接提供集成的接口。而其他持续集成工具也大多只能与这两种工具进行集成。

但我们仍然可以通过bat和shell脚本,来调用其他工具。如:与代码工具的集成。有两种方案:

1. 将代码检查的功能制作命令行模式,然后使用subversion的钩子技术在开发人员每次

提交时自动检查代码,如存在不符合项,可阻止其提交代码;

2. 将代码检查和统计工具制作成命令行模式,然后在编译脚本中调用该工具,进行代码

检查和统计,并将检查和统计结果以文件的形式输出。

? 能够对历史数据进行统计和分析,并出具分析报告

Jenkins默认安装后提供的统计和分析功能比较少,但可通过安装适合的插件来使用各种统计和分析:

持续集成工具选型报告

? 便于安装、部署与维护

(Rev.B-20080829) 2013-04-1711(12)

持续集成工具选型报告

通过试用,我们发现Jenkins的安装和部署相当方便,同时可通过web界面进行维护。

6 试用中发现的问题

我们暂时只在Windows下对Jenkins进行了试用,Linux的版本将在后续跟进。在试用过程中,发现的问题主要有如下几点:

1.调用bat批处理文件执行编译时,如果执行过程中因代码或其他原因造成异常退出,编译异常中止时,Jenkins无法准确获知执行结果,仍然显示构建成功。需要探索其他方式来确定编译结果,如让Jenkins检查bin文件是否生成等。

2.在Windows中部署的Jenkins执行bat批处理文件的耗时明显偏长,如直接执行bat耗时5分钟,在Jenkins中调用执行则需要耗费大概30分钟。而Linux下部署的Jenkins确很正常。经过分析,我们认为可能与window版本的Jenkins采用windows服务方式运行有关。后续我们正式搭建Jenkins时,可统一采用JDK+Tomcat+Jenkins.war的方式。

3.为了便于Jenkins对代码库进行轮询检查,应将代码集中管理。如果代码分散在SVN的各个不同路径下,将难以进行配置。

4.和shell脚本中要使用相对路径。

7 选型结论

综上所述,经过短期的试用,Jenkins在安全性、扩展性、稳定性和兼容性方面均满足了我们的要求,且Jenkins是全免费的开源软件,还提供大量插件对其功能进行扩展,为后续的二次开发和功能扩展提供了良好的基础。因此推荐采用 Jenkins作为部门的持续集成服务器。但在使用过程中我们仍然发现了一些小的问题,还需要继续摸索和解决。

欲了解Jankins的更多内容,请访问如下地址: http://10.90.25.17:8080 (Windows) http://10.90.25.18:8080/jenkins (Linux)

(Rev.B-20080829) 2013-04-1712(12)

更多相关推荐:
器件选型报告模板

资料编号项目编号序列号版本V产品型号名称二号字体部件型号名称可选小二号字体器件选型报告共页编制校对审定审核有限公司年月日文档修改记录文件名命名规范电子文件名部件型号名称选型报告其中部件型号名称同封面1目录123...

ERP选型报告

ERP选型报告ERP选型小组目录一、ERP选型情况11、ERP选型分支12、ERP选型阶段13、ERP评价方式14、供应商分析1(1)用友1(2)金蝶2(3)孚盟公司2(4)SAP公司3二、项目目标和计划41、…

产品选型报告_XXXX产品(模板)

采购产品选型报告20xx年2月目录1产品选型的背景和目的阐述采购该类产品的背景和使用目的2对选型产品的要求写明对该类产品所应具备的功能性能以及其他方面的要求21功能要求22性能要求23其他要求3备选产品分析4选...

某单位eHR系统选型报告

集团eHR系统选型分析报告评估对象用友金蝶20xx年7月11日eHR系统选型分析报告目录一选型总体原则2原则1立足现实展望未来2原则2不仅是选择产品同时也是选择战略合作伙伴2原则3成熟的产品2原则4本地化的服务...

OA选型报告 20xx

LOGOOA选型报告撰写审核批准文档撰写时间20xx年2月23日110LOGO目录一现状分析3二OA产品4三OA选型概述5四品牌对比5五用户群对比6六软件成熟度对比7七设计先进性对比8八设计人性化对比9九服务对...

空调选型报告

xxxxxx用空调系统选型报告一空调系统选型依据据xxx建设项目一期初步设计本工程为xxxxx地上5层地下1层总建筑高度22米总建筑面积为xxx平方米用空调系统结合生产工艺要求等综合考虑空调系统选型建议选型如下...

ERP软件选型报告

ERP软件选型报告一企业业务和规模描述本企业是一家以电子产品为主要生产产品的制造型企业共有员工500余人在国内属于中小型企业在全国各地有三个分厂公司内部设有计算机设备计算机及网络水平均一般企业拥有自己的专门销售...

燃气壁挂炉选型报告

燃气壁挂炉选型企业标准及选型案例分析20xx年6月目录前言2第一部分燃气壁挂炉原理分类和品牌综述2一燃气壁挂炉的起源品牌综述及市场分析21起源22品牌概述3一燃气壁挂炉原理4二燃气壁挂炉分类5第二部分我公司在以...

电瓶车选型报告

关于电瓶车选型的报告关于盾构施工出渣电瓶车选用事宜依据我单位盾构施组方案以及现期工程进展现状拟采用25t电瓶车作为水平运输牵引设备主要原因分析如下一电瓶车牵引盾构出土每环方量虚方为696m3选用13m3容量渣车...

音视频模块选型报告

音视频模块选型报告一产品选型的背景和目的1数字监控的发展现状监控技术从上个世纪80年代进入我国以来随着安防需求的急剧增加一直在飞速发展从技术层面上分经历了以下几个不同发展阶段第一代为全模拟监控也叫闭路电视监控第...

电磁流量计选型报告

电磁流量计选型报告一项目背景成孔注浆一体化设备需要对注入的灰浆量进行自动计量保证加浆量的准确性自动计量装置采取电磁流量计对流过其内衬的灰浆进行自动计量电磁流量计的突出优势是1测量精度高不受流体密度粘度温度压力和...

GPRS手机模块性能分析及选型报告

手机模块分析及选型报告一概述我们根据对生产厂家的考察和对芯片在市场的应用情况选择性能较好的手机模块进行试验及分析二具体内容1前期准备要实现无线通信所选GPRS模块要满足内嵌TCPIP协议显然MC35等模块不符合...

选型报告(36篇)