持续集成学习笔记-入门篇(2)持续集成工具选择
持续集成的工具已经是铺天盖地,有商业化的软件,也有开源的软件。覆盖的CI功能也是多种多样。从功能角度分,就笔者的学习经验而言,最关键的是三类:版本控制工具、构建工具、CI(Continuous integration)服务器。而其中最核心的又是构建工具。其他开源的、与持续集成相关的工具也有很多,但大多数是辅助性的工具。笔者学习持续集成时所选择的工具为:SVN、Maven、Jenkins。
持续集成的工具已经是铺天盖地,有商业化的软件,也有开源的软件。覆盖的CI功能也是多种多样。
从功能角度分,就笔者的学习经验而言,最关键的是三类:版本控制工具、构建工具、CI(Continuous integration)服务器。而其中最核心的又是构建工具。其他开源的、与持续集成相关的工具也有很多,但大多数是辅助性的工具。
笔者学习持续集成时所选择的工具为:SVN、Maven、Jenkins。
一、主要工具
(一)、版本控制工具
有时,版本控制又称为配置管理(SCM),所以版本控制工具同时也是配置管理工具。在各类版本控制的开源软件中,最著名的莫过于CVS、SVN(Subversion)、GIT三个了。
这三个工具各有千秋。其中,GIT支持离线工作,更适合开源软件或者开发人员不能集中办公情况下的版本管理工作。同时,SVN和GIT可以配合使用。
SCM工具 | 江湖地位 | 控制方式 | 原子提交 | 并发冲突解决 | 权限管理 | 支持变更范围 |
CVS | 资格最老,但逐渐衰退 | 集中式 | NO | 排它锁 | 方法有限 | 文件 |
SVN(Subversion) | CVS的升级,目前较为主流 | 集中式 | YES | 合并模式(通知冲突) | 支持目录级。通过工具可支持文件级 | 文件、目录 |
GIT | Eclipse.org上使用最多 | 分布式 | YES | 合并模式 | 权限配置较为困难 | 文件、目录 |
(二)、构建工具
构建工具是持续集成的核心,它对源代码进行自动化编译、测试、代码检查,以及打包程序、部署(发布)到应用服务器上。从配置管理工具上下载最新源代码后,所有的后续工作几乎都可以通过构建工具完成。
在java开发中,比较有名的构建工具就是Ant、Maven。在PHP开发中,Phing(基于Ant)也比较有名。同样的,Maven也可通过相关的PHP-Maven插件完成对PHP开发构建的支持。
构建工具 | 江湖地位 | 主要特点/优势 | 主要劣势 |
Ant | 老牌的构建工具,目前仍有很强生命力 | l 自由、灵活 l 应对复杂项目时很有利 l 用法符合一般人的思维习惯 | l 引入第三方软件框架时, jar包管理比较困难 |
Maven | 与Ant势均力敌 | l 约定优于配置; l 第三方jar包管理方便 | l 用法不太符合一般人的思维习惯 l 需要搞懂许多默认约定(比如默认的目录结构) |
(三)、CI服务器
CI服务器的主要作用就是提供一个平台,用于整合版本控制和构建工作,并管理、控制自动化的持续集成。
开源软件中,比较有名的CI服务器包括Jenkins、CruiseControl、Continuum。而比较有名的商业化CI服务器是TeamCity、Bamboo、Pulse等。
CI服务器 | 江湖地位 | 主要优、劣势 | 支持的SCM工具 | 支持的构建工具 |
Jenkins(即原来的Hudson) | 目前最为主流 | l 基于WEB,操作方便 l 插件众多,支持多种高级功能 | 主要专注于CVS、SVN… | Maven、ant、shell… |
CruiseControl | 成熟健壮,使用人员较多 | l 通知技术一流 l 配置、维护较为困难 | CVS、SVN、VSS、CM Synergy… | Maven、ant、make、命令行脚本(shell)… |
Continuum | 轻量级CI平台,现在使用较少 | l 基于WEB,易于安装 l 功能相对不够丰富 l 用户界面难以使用 | SVN/CVS/Starteam/Clearcase/Perforce… | Maven、ant、shell… |
二、其他工具
很多工具可以通过与构建工具、CI工具相结合(当然,其中有很多工具也可以单独工作),来完成更多的自动测试、报告生成等工作。根据工具不同,其具体的结合方法也不同,但大体都是通过插件形式进行结合的。例如:
l Maven中通过依赖和plugin方式引入第三方工具
l Jenkins主要通过各类插件引入第三方工具
这些工具种类实在太多,可以根据实际工作需要进行选择。
工具种类 | 主要工具(主要用于java开发) |
单元测试 | Juint,PHPUnit(for PHP) |
静态代码检查 | Findbugs、Checkstyle、PMD、 |
测试覆盖统计 | Cobertura、clover |
负载和性能测试 | Jmeter |
记录代码质量度量 | violations |
…… | …… |
更多推荐
所有评论(0)