2022年持续集成工具的选择 .pdf
《2022年持续集成工具的选择 .pdf》由会员分享,可在线阅读,更多相关《2022年持续集成工具的选择 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、持续集成 (continuous integration)作为敏捷编程的基石现在已经被绝大多数的开发团队所广泛采用。 而持续集成的工具现如今也是百花齐放,各有千秋, 本文主要对比了在 Java 领域中比较常见的几种CI server (因为公司要求统一整个公司的 CI server )。如果想了解更多的工具,可以看这里:http:/confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix,这个网页集中了决大多数比较流行的CI server ,但是我发现很多的内容已经落后于实际产品的功能了, 所以如果要对比的话, 可能要实际到
2、产品的站点去看一下,最好还是下载下来运行起来看。在本文中,我主要针对以下几种CI Server 作对比,这也是公司里各个项目组目前自行选用的(版本有点多,国内的多选用了一些open source 的,而老外那边用得比较多的是商用版本,CruiseControl和 TeamCity 是我加的,因为名气非常大。):CruiseControl (http:/ Hudson (https:/ LuntBuild (http:/ (http:/ AntHill Pro (http:/ Bamboo (http:/ QuickBuild (http:/ 在持续集成领域, OpenSource的 Cruis
3、eControl和 LuntBuild可谓老牌了,尤其是 CruiseControl,出自 thoughtworks ,这可是 Martin Fowler的老巢啊。Hudson作为 OpenSource里持续集成的后起之秀,现在已经赶超了这两个前辈,目前恐怕是使用最多的一个CI Server 了。而后面 4 个是商用的 CI Server ,其中 TeamCity 是来自 jetbrains的,jetbrains是开发著名的 IDE IntelliJ的公司。Bamboo 则是开发著名的Bug Tracking 工具 Jira 和 Wiki Confluence的公司 atlassian公司出品
4、的。 AntHill也属于 Continuous Integration界的元老,QuickBuild则是 LuntBuild的商业版本,我在下面重点考量的是QuickBuild ,因为 LuntBuild好像现在更新较慢了,而且QuickBuild现在好像也有了免费的所谓的 Community Edition ,功能齐全,只是配置数有所限制。在这些商业版本中,TeamCity 应该是目前市场占有率最高的。由于公司里比较倾向使用商业版本的服务器,所以我重点比较的是后4 种,捎带比较了一下CruiseControl和Hudson 。 TeamCity 和 QuickBuild都有各自的免费版本,
5、 有兴趣的也可以去看看。功能对比CI Server 在本质上就是一个定时调度器。我们配置一系列的项目,然后设定一个定时器,让它干一些活,然后通知大家。所以很多公司都使用所谓Home-made名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 的工具,用 cron+Ant/Maven 来做持续集成, 这个就已经可以达到CI 的最简单的功能了。而使用工具, 就是我们除了基本的编译和通知功能以外,我们还有很多其它的需求,在我们公司里,选择
6、CI Server主要考虑以下几点:便于公司的统一管理(大约有200+ Projects需要统一管理)对于项目本身进行流程管理: Daily Build - QA Build - Release Build 和公司 AD (Active Directory)的连接以对用户进行权限管理Continuous Testing 的支持,即对于项目的Test 要能产生出详尽的报告以及收集 Test 的统计数据以作为项目的分析和考量Continuous Code Quality Analysis的支持,即能处理项目产生的Coverage 报告, Code的 static analysis报告,并且能收集这
7、些报告的统计数据以作项目的分析和考量与 SCM 工具的集成,我们公司主要有三种VCS ,ClearCase, Subversion和 StarTeam 与其它工具的集成,如bug tracking工具, IDE集成等等。首先,我们从安装的角度来查看一下安装 CI 安装是我们开始的第一步,同时也对各个CI server 都有了初步的印象。按照各自的手册,很快就装好了,我基本上选择的是Standalone 的版本,就是不配置数据库,使用自带的,也不deploy 到 Tomcat或者其它容器,这点,基本上每个CI Server 都非常简单。所以也没看出什么好坏来。这里不得不提一下AntHill,有点
8、小家子气,要download 还得提交一个 request ,然后才能下载,安装,有点烦。配置项目在大多数的 CI Server 中,绝大部分都是以Project或者 Project Group来进行管理,只有 LuntBuild和 QuickBuild比较另类,它们使用了Configuration这个术语,意即一个配置。 在配置一个典型的项目的时候,即只处理基本的一个流程:CheckOut, Build, Publish Artifacts,这些工具都完成的非常好,也非常简单,我使用下来,觉得TeamCity 的导航最方便,一目了然。而LuntBuild和QuickBuild在这方面稍显人性
9、化不足,这两个工具都没有使用wizard 的模式。下面,我接着实验配置50 个测试项目,这也就开始考验一个CI Server的管理能力了(因为我们项目较多)。使用下来,我发现QuickBuild对于我而言,最实用。因为它使用Configuration而不是 Project ,并且 QuickBuild是这些 CI 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - Server 中唯一支持树状结构配置的。我可以把Configurat
10、ion配置成 Team A, Team B . ,然后根据实际情况,对每个Team配置任意多个子节点,孙节点(注意,Configuration的数目在 QuickBuild的 Community Edition里是要限制的,好像是最多 16 个),另外, QuickBuild 的继承关系使用起来也非常方便,如果要管理一个大型的CI Server ,没有这种继承对我而言简直是一种折磨。比如说用 hudson 来配置 50 个项目,我折腾了大半天,而用QuickBuild来,我大约只用了一个小时,我实际配置的Configuration(含有实际 step 定义的)只有 3个,其它的都是继承下来,
11、然后修改了一下参数而已, 而如果我们需要批量修改一系列的 configurations的时候,则由于有继承关系,通常我们只要去修改一下父节点的设置就可以了。TeamCity 支持 Project Group的概念,类似于一种树形,但是还不完备,它只能分成两级关系,即Project Group和 Project 。另外 QuickBuild所拥有的继承的功能,在别的CI 里没有看到过,有的只是象TeamCity 类似的 copy project的功能。而 QuickBuild在复制的能力上远远胜过其它的 CI Server ,它可以整个子树拷贝,这也就意味着,我可以配置一个公司用的 templa
12、te configuration树,然后复制出 A部门,B部门, C部门,等等等等。对于不同项目之间的区别则通过变量来控制,赞一个!TeamCity 在配置的方便上真得是没话说,非常直观,最酷的是象JUnit ,NUnit 这样的 Tests ,连 Ant 脚本都不需要写了,它直接就可以找出项目里的unit tests,这个在其它的工具里也没有看到过。 至于 CruiseControl,Hudson ,Bamboo 等则是中规中矩,无甚亮点。这个环节,QuickBuild和 TeamCity 胜出。另外配置一个项目要配的就是项目持续集成的流程管理,在我们这里,基本上是这样一个流程 : Dail
13、y Build - QA Build - Integration Build - Release Build 。所谓 Daily Build,顾名思义,就是每天一次的,由development team管理以保证项目的顺畅执行,然后经过一段时间后,development team 要提交到 QA那边进行测试,通常是2 个星期到一个月左右,随项目大小不等,QA测试结束之后,如果没有重大的问题,则提交作Integration Test,以保证在模拟的实际环境中能正常工作,最后,如果没有什么问题的话则作Release Build以形成发布版本。对于公司里有一些Team使用敏捷编程的,则需要增加所谓的
14、Commit Test Build,也就是 developer 在作每一个 checkin 的时候自动触发一个 build ,以保证 build 不会被这个 checkin 破坏(包括不会破坏unit tests和 code quality)。这也是所谓的要作continuous testing和 continuous code quality analysis,这些都是通过利用JUnit, NUnit,CheckStyle, PMD ,Cobertura ,FxCop等工具来实现的。我们在后面也会讲到,这里略过。这个环节里,个人比较喜欢AntHill Pro和 QuickBuild ,这两个
15、工具都是比较强调流程的,尤其是 AntHill Pro更是将其作为卖点。 AntHill Pro以工作流的模式来定义这个流程,一个项目可以定义多个的workflow ,对应于我们的case,就是定义 Daily Build的 workflow ,定义 QA Build 的 workflow ,等等,然后在作promote 的时候,通过选择不同的workflow 来达到目的。而 QuickBuild则是利用已有的 configuration的概念,定义不同的Configuration,然后在Configuration的 setting里定义一个或多个要promote 的 configuratio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年持续集成工具的选择 2022 持续 集成 工具 选择
限制150内