《2022年持续集成工具选型报告 .pdf》由会员分享,可在线阅读,更多相关《2022年持续集成工具选型报告 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、持续集成工具选型报告(Rev.B-20080829) 2013-04-171(12)持续集成工具选型报告1引言1.1什么是持续集成随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile ) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。持续集成( Continuous integration )正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译
2、、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。1.2持续集成的价值1)持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;2)持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;3)持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。持续集成属于集成测试中的一部分。持续集成的目的不是为了发现更多的BUG,而是为了更早的发现 B
3、UG。持续集成是高频度的集成,集成过程是不断的将新增的代码纳入集成中,及时发现新增的代码是否对现有的代码产生冲突(编译冲突:编译链接是否存在问题;运行冲突:原有的单元测试是否存在问题等等)。并采用一系列措施和规范,确保冲突尽早的将影响消除,高效快捷的保证系统的稳步前进。1.3持续集成的原则业界普遍认同的持续集成的原则包括:1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有IBM Rational ClearCase、CVS、Subversion 等;2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;3)需要有专门的集成服务器来
4、执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;4)必须保证构建的成功。如果构建失败, 修复构建过程中的错误是优先级最高的工作。一旦修复,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-172(12)需要手动启动一次构建。1.4持续集成系统的组成一个完整的构建系统必须包括:1)一个自动构建过程,包括
5、自动编译、分发、部署和测试等。我们已先期搭建了自动编译环境,针对试点项目编写了自动编译脚本。2)一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。对于宽带产品部来说,目前我们使用subversion 来管理代码库,并先期已要求所有源代码需上传到代码库中。3)一个持续集成服务器。我们本次选型的对象正是持续集成服务器软件。1.5持续集成系统的工作原理持续集成由于要求高频度以及自动化,所以一般采用持续集成服务器软件来实现。持续集成服务器软件的工作原理比较简单。它就像一个监视着源代码配置库的监视器,每次源代码配置库中有新的提交,服务器就会自动检出源代码并启动一次构建任务
6、,并且把构建任务的结果记录下来并通知相关人员。简明扼要的说,持续集成软件本质就是一个定时调度器。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-173(12)持续集成工作机制工作机制心跳检测检测版本管理器是否到达设置好的轮询时间达到未到达源码是否发生变化执行构建更新源码到本地服务器有变化无变化邮件方式发送构建结果通知网页显示构建结果编译静态检查执行单元测试打
7、包测试部署2持续集成工具介绍CI Server 在本质上就是一个定时调度器。我们配置一系列的项目,然后设定一个定时器,让它名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-174(12)干一些活,然后通知大家。而我们除了基本的编译和通知功能以外,我们还有很多其它的需求,在我们公司里,选择CI Server 主要考虑以下几点:首选免费和开源的,便于功能扩展和二次
8、开发需要同时兼容Windows 和 Linux 两种操作系统支持基于bat 和 shell 脚本的集成必须与现行的配置管理工具subversion 无缝集成具有一定的安全性和可靠性,要能进行权限配置便于与其他工具的集成,如单元测试、自动测试工具能够对历史数据进行统计和分析,并出具分析报告便于安装、部署与维护针对以上几点要求, 我们对目前主流的CI Server 进行了初步筛选, 圈定了 Cruise Control 、 Jenkins和2.1Cruise Control CruiseControl 是 CI Server 的老者,诞生已是多年,在许多方面,CruiseControl 服务器已经
9、成为持续集成实践的同义词。而现在,CruiseControl 已发展成为一个家族式系统,包括 CruiseControl.java、CruiseC、CruiseControl.ruby 等适应不同语言环境的实现。但可惜的是目前没有专门针对嵌入式 C 语言的版本。官方地址: http:/ 2.2Jenkins(Hundson) Jenkins 原名 Hudson, 是 CI Server 的后起之秀, 目前恐怕是使用最多的一个CI Server 了。 Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时Jenkin
10、s 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。官方地址: http:/jenkins-ci.org/ 2.3Apache Continuum Continuum 是最新的CI 服务器之一,也是值得关注的一个新进入者。Continuum 的安装和配置很简单: 只要下载和释放ZIP 文件, 运行命令行程序,就可以运行了。 基于Web 的界面使得配置项目很容易。 而且, 还不需要安装Web 服务器, 因为Continuum 内置了Jetty Web 服务器。 并且,Continuum 可以作为Windows 服务运行, 还在应用程序的
11、某些部分嵌入了上下文敏感的文档,从而提供了很多帮助。官方地址: http:/continuum.apache.org/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-175(12)3三种持续集成工具对比Cruise Control Jenkins Continuum 特性有 针 对 不 同 编 程 语 言 的 版本,特别适合Java 和.net 的集成目前
12、使用率最高的CI Server ,具有强大的适应性和插件扩展能力与同为Apache 开发的Ant 、Maven 配合使用时兼容性最好目标环境Windows 和 Unix; 任何能运行 Java JVM 的平台能 够 运 行JVM 和servlet 容器的系统Linux 、 Mac OS X 、Solaris 和Win32 SCM 支持Subversion,CVS, ClearCase,StarTeam,SourceSafe 通过插件可支持所有主流配置管理工具Subversion , CVS ,ClearCase,git,SourceSafe 扩展性由于历史悠久,目前有丰富的插件可供下载和扩展非
13、常丰富的插件扩展功能,有大量的插件可供下载和安装暂无插件扩展功能易用性部署和维护需要大量使用配置文件,易用性较差安装和部署很方便, 配置采用Web 界面,简洁明了安装和部署需与Maven配合,配置采用Web界 面 与 配置 文 件 相 结合更新频率最近更新时间:2010 年 9 月15 日,已较长时间未更新最近更新时间: 2011 年 12 月19 日,更新频率很高最近更新时间: 2011 年9 月 18 日,更新频率较高通过以上的对比,可以发现Jenkins 从中脱颖而出,其各方面指标均达到了我们的要求。接下来需要下载、安装和部署Jenkins 来进行试用。4Jenkins 试用4.1下载通
14、过如下地址,可下载到Jenkins 最新的版本和源代码。Windows 版:http:/mirrors.jenkins-ci.org/windows/latest Opensuse Linux 版: http:/pkg.jenkins-ci.org/opensuse/ 源代码: https:/ 4.2安装和部署在 Windows 编译服务器上,安装Jenkins 有两种方式:1.自行安装JDK 和 Java Web 服务器(如Tomcat),然后下载打包后的.war 文件,并将war包部署到Web 服务器下。2.直接下载windows 安装版本,通过安装程序安装完成后,Jenkins 会自动以
15、windows 服务的形式启动并运行。两种安装方式均很方便,安装完成后打开浏览器地址,我们看到了Jenkins 的主页面:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-176(12)可以看到, Jenkins 已经进行了部分本地化的工作,对中文的支持很好。4.3新建项目接下来新建项目:源代码管理,选择subversion,在 Jenkins 默认安装下已经
16、自动安装了subversion 的访问插件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-177(12)接下来设置触发器,“Poll SCM”表示对 SCM 进行定期轮询, 我们设置每隔1 小时自动对SVN进行一次轮询,如有有代码更新,则执行构建。由于 GPON OLT 线卡部分目前已有一套完备的代码及自动编译脚本,因此我们选择使用该项目进行试用。 这里的
17、构建, 我们需要Jenkins 自动执行 bat 批处理文件, 选择第一项 “Excute Windows Batch command”即可。同时我们可以看到, Jenkins 还支持 Linux 下的 shell 脚本、Ant 脚本和 Maven脚本。最后,在构建后操作选择中勾选“E-mail Notification ”,可使 Jenkins 在编译失败后发生不稳定的编译时向特定的地址发送邮件通知。4.4参数配置进入 Jenkins 的系统管理,可以看到其所有的可配置选项:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师
18、精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-178(12)进入“系统配置”,可对Jenkins 进行全局参数的设置。如权限设置,我们可通过如下的设置完成:通过以上设置后, 匿名用户将只能查看轮询和编译结果,只有系统管理员admin 才能进行配置、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - 持续集成工
19、具选型报告(Rev.B-20080829) 2013-04-179(12)维护等操作。4.5插件管理通过 Jenkins 强大的插件管理功能,可以使其适应多种不同的执行环境。Jenkins 的插件安装可以采用自动下载安装和手动下载,因自动编译服务器无法直接访问外网,我们采用手工下载方式,安装了针对邮件发送和批处理执行的两个插件。插件安装后我们可以发现,在系统配置中可以编辑邮件的内容:插件资源地址:https:/wiki.jenkins-ci.org/display/JENKINS/Plugins4.6运行监控接下来,我们对GPON OLT 线卡项目进行了为期三天的运行监控,结果如下:在采用每小
20、时轮询的情况下,该项目在2011 年 12 月 21 日至 23 日的三天时间里,持续集成编名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-1710(12)译得到了12 个版本。每个版本的SVN 日志记录可以在“变更集”中查看到。4.7Linux 下的部署和试用接下来在OpenSuse Linux 环境下部署和试用Jenkins。这次我们直接使用war 包的
21、方式,手动部署。需要安装如下内容: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试用结果
22、经过 Windows 和 OpenSuse Linux 下的使用,对照之前提出的选型原则,我们得到如下结果:首选免费和开源的,便于功能扩展和二次开发Jenkins 为免费和开源系统,可从其官方提供的地址下载到源代码。需要同时兼容Windows 和 Linux 两种操作系统经过 WindowsServer2008 和 OpenSuse Linux 下的试用, 可确认 Jenkins 对这两种操作系统均可兼容。支持基于bat 和 shell 脚本的集成通过试用,我们分别在两个项目中使用bat 和 shell 脚本进行集成,均和正常执行。名师资料总结 - - -精品资料欢迎下载 - - - - -
23、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-1711(12)必须与现行的配置管理工具subversion 无缝集成Jenkins 默认配置下,以通过 SVNkit 接口提供了对subversion 的无缝集成,并支持对 subversion的定时轮询检查、日志抓取等功能。具有一定的安全性和可靠性,要能进行权限配置通过配置, Jenkins 可对访问用户进行权限控制,使匿名用户只能查看,而只有管理员才具有配置的权限
24、。如果需要更复杂的用户权限配置,可通过安装相应的用户管理插件来实现。便于与其他工具的集成,如单元测试、自动测试工具目前 Jenkins 支持主流的Ant 和 Maven 的集成, 而对于嵌入式开发,由于本身的测试和集成工具比较少, Jenkins 无法直接提供集成的接口。而其他持续集成工具也大多只能与这两种工具进行集成。但我们仍然可以通过bat 和 shell 脚本,来调用其他工具。如:与代码工具的集成。有两种方案:1. 将代码检查的功能制作命令行模式,然后使用subversion 的钩子技术在开发人员每次提交时自动检查代码,如存在不符合项,可阻止其提交代码;2. 将代码检查和统计工具制作成命
25、令行模式,然后在编译脚本中调用该工具,进行代码检查和统计,并将检查和统计结果以文件的形式输出。能够对历史数据进行统计和分析,并出具分析报告Jenkins 默认安装后提供的统计和分析功能比较少,但可通过安装适合的插件来使用各种统计和分析:便于安装、部署与维护名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - 持续集成工具选型报告(Rev.B-20080829) 2013-04-1712(12)通过试用,我们发现Jenkins 的安
26、装和部署相当方便,同时可通过web 界面进行维护。6试用中发现的问题我们暂时只在Windows 下对 Jenkins 进行了试用, Linux 的版本将在后续跟进。在试用过程中,发现的问题主要有如下几点:1.调用 bat 批处理文件执行编译时,如果执行过程中因代码或其他原因造成异常退出,编译异常中止时, Jenkins 无法准确获知执行结果,仍然显示构建成功。需要探索其他方式来确定编译结果,如让 Jenkins 检查 bin 文件是否生成等。2.在 Windows 中部署的 Jenkins 执行 bat 批处理文件的耗时明显偏长,如直接执行bat 耗时 5 分钟,在 Jenkins 中调用执行
27、则需要耗费大概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) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -