基于Jenkins的持续集成CI

CI(continuous integration)持续集成

一次构建:可能包含编译,测试,审查和部署,以及其余一些事情,一次构建就是将源代码放在一块儿,并验证软件是否能够做为一个一致的单元运行的过程。能够理解为频繁的在多个团队的工做中集成,而且给与反馈的过程。团队开发成员常常集成它们的工做,每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。java

CI场景以下:shell

(1)开发人员向版本控制库提交代码,同时,集成构建计算机上的CI服务器正在轮询检查版本控制库中的变动数据库

(2)在提交发生以后,CI服务器检测到版本控制库中发生了变动,因此CI服务器会从库中取得最新的代码副本,执行构建脚本,该脚本将对软件进行集成服务器

(3)CI服务器向指定的项目成员发成电子邮件,提供构建结果的反馈信息。maven

(4)CI服务器继续轮询版本控制库中的变动。工具

CI持续集成周期

一个典型的持续集成周期包括如下几个步骤:测试

(1)持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。ui

(2)若是发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。编码

(3)等代码彻底更新之后,调用自动化编译脚本,进行代码编译。spa

(4)运行全部的自动化测试。

(5)进行代码分析。

(6)产生可执行的软件,可以提供给测试人员进行测试。

CI系统

在CI中您须要一个版本控制库,好比(CVS或者SVN,subversion)来执行CI。版本控制库,你们都知道SVN,能够方便的管理源代码,能够沿着时间轴取得不一样同版本的代码。CI服务器在变动提交到版本库后执行的集成构建,他会每一个一段时间去检查版本库中的变动,因此咱们须要对CI服务器进行配置。CI服务器还须要提供一个方便的显示板来显示构建的结果。可是CI服务器并非必须的,也能够经过执行构建脚原本执行构建。

从上面咱们知道CI的4个基本特征:与版本控制库连接,构建脚本,某种类型的反馈机制,集成源代码变动的过程。这也是CI系统的4个基本功能。一个好的CI系统的关键特征就是速度,这个系统的本质就及时向开发者和项目风险承担者提供反馈信息。

既然CI这么好,但仍是有些团队并无选择使用,其实这是一个综合考虑的结果。使用CI会增长一些成本的,好比增长了维护CI系统的开销,变化太多尤为是对于老项目须要改变不少才能实现CI。失败的构建太多,若是在提交代码以前没有私有构建一次,就会形成在使用ci的时候变动变得频繁。存在额外的硬件和软件成本,使用ci就须要一台独立的集成服务器。

一些须要考虑到的问题

测试能达到多少代码覆盖率?

执行构建须要多长的时间?

平均的代码复杂度如何?有多少代码重复?

在版本控制系统中对构建版本打上标签了吗?

已部署的软件存放在哪里?

是否使用测试覆盖率工具?

如何作好code review?

CI工具

持续集成工具:jenkins、CruiseControl、Hudson、gauntlet

构建工具:Maven、Ant、groovy

CDBI:持续数据库集成,即每次项目的版本控制库中发生变动时,重建数据库和测试数据。

Jenkins

Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专一于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展现项目构建的趋势和稳定性。Jenkins 还提供了很是丰富的插件支持,这使得 Jenkins 变得愈来愈强大。咱们能够方便的安装各类第三方插件,从而方便快捷的集成第三方的应用。

PMD

静态代码分析工具,经过扫描Java源代码,发现隐藏在其中的各类问题,包括重复代码,日志记录不规范,异常处理不规范,未使用引入的包,支持ant集成。

这里有关于PMD的一些介绍:http://blog.csdn.net/sadamdiyi/article/details/6073694

Checkstyle

提供了一个帮助JAVA开发人员遵照某些编码规范的工具。它可以自动化代码规范检查过程。相比于PMD会更加侧重于编码标准(语法)方面的检查,而PMD是侧重于语义bug。

基于Jenkins快速搭建CI环境

首先要知道一个持续集成环境须要包括三个方面要素:代码存储库构建过程持续集成服务器

​代码存储库通常使用SVN,

一、开始新建一个 Jenkins 项目, 因为咱们须要链接 SVN 的代码存储器, 咱们选择 Build a free-style software project。

二、而后配置这个 JenkinsTest 项目了,根据实际的 SVN 服务器服务器信息配置 Source Code Management,这能让 Jenkins 知道如何从哪里获取最新的代码。

三、根据开发须要,隔一段时间须要从新构建一次。选择 Build periodically,在 Schedule 中填写 0 * * * *对应的构建时间。

四、添加 build 的步骤了。Jenkins 提供了四个选项供咱们选择,能够根据须要执行或调用外部命令和脚本,例如ant、shell、maven等等。这些脚本都是根据须要本身配置的。

五、能够在 Jenkins 中观察构建的进度和最终的状态——成功或者失败。太阳表明以前的构建没有任何失败,蓝色的小球表明构建成功。也能够在JenkinsTest 查看单次构建的 Console 的输出结果。从中能看到构建的第一步是从 SVN 服务器上 check out 代码,而后在build。

具体的能够参考:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/

 

后话:其实这就是我在公司实习时所谓的CBD,他们没有使用集成工具,而是直接在服务器上执行CBD脚本,check代码,build构建,deploy部署。

相关文章
相关标签/搜索