您的位置:首页 > 其它

持续集成+持续部署(二)基于Jenkins 快速搭建持续集成环境

2014-03-10 15:27 866 查看
 

这一篇文章主要讲基于Jenkins 快速搭建持续集成环境,但是我觉得其原理与我上篇文章是一样的:先从svn下载最新文件-->编译-->打war包-->部署到tomcat。而且上篇文章中的方式更加容易操作与理解,只是Jenkins提供的功能比如日志监控等可能有人会用得到(个人愚见

)。下面说一下具体实现步骤:

 

(一)、什么是持续集成

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

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

持续集成的核心价值在于:

持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;

持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;

持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

(二)持续集成的原则

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

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

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

3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;

4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。

(三)持续集成系统的组成

由此可见,一个完整的构建系统必须包括:

一个自动构建过程,包括自动编译、分发、部署和测试等。

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

一个持续集成服务器。本文中介绍的 Jenkins 就是一个配置简单和使用方便的持续集成服务器。

持续集成的好处:
(四)持续集成的好处

Steve McConnell在《Code Complete》里提到,持续集成(书中使用Incremental Integration的术语)有以下几点好处:

1)易于定位错误。也就是当你的持续集成失败了,说明你新加的代码或者修改的代码引起了错误,这样你很容易的就可以知道到底是谁犯了错误,可以找谁来讨论。

2)及早在项目里取得系统级的成果。因为代码已经被集成起来了,所以即使整个系统还不是那么可用,但至少你和你的团队都已经可以看到它已经在那了。

3)改善对进度的控制。这点非常明显,如果每天都在集成,当然每天都可以看到哪些功能可以使用,哪些功能还没有实现。如果你是程序员,你不用在汇报任务的时候说我完成了多少百分比而烦恼,而如果你是项目经理的话,那么你也不再烦恼程序员说完成了编码的50%到底是个什么概念。

4)改善客户关系。理由同上。

5)更加充分地测试系统中的各个单元。这也是我们常讲的Daily Build与Smoke Test相结合带来的绝大好处。

6)能在更短的时间里建造整个系统。这点恐怕要你实施以后才能得出结论。就我们而言,持续集成并没有为每个项目都缩短时间,但却比没有实施时,项目更加可控,也更加有保证。

随着时间的推移,持续集成带来的更多好处,也逐渐被认识到了,比如说:

7)有助于项目的开发数据的收集。比如说,项目代码量的变化,经常出错的Tests,经常出错的source code,等等。

8)与其它工具结合的持续代码质量改进。如与CheckStyle, PMD, FindBugs, Fxcop等等等等的结合。

9)与测试工具或者框架结合的持续测试。如与xUnit,SilkTest, LoadRunner等等的结合。

10)便于Code Review。在每个build里,我们都可以知道与前一个build之间有什么改动,然后针对这些改动,我们就可以实施Code
Review了。

11)便于开发流程的管理。比如说,要把一个开发的build提交给测试组作测试,测完满意了,再提交到发布组去发布。
 

(五)Jenkins 使用

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

    准备工作:安装svn、ant、tomcat,Maven3

1、下载jenkins.war,将其放倒 tomcat的webapps下,启动tomcat,进入jenkins的控制页面,非常简单:



两个需要配置的地方:



先看系统设置,需要配置jdk,ant,svn,maven,邮件信息等(我这里用的是svn)



 安装插件(其中Deploy to container Plugin是部署项目到tomcat时用到的):



 然后:构建一个自由风格的软件项目





 配置svn,ant,触发器(何时构建,我这里还没有配置)以及tomcat信息,



 

 

 至此大功告成,可以等待自动构建,也可以手动构建部署:

 


注意:这里部署到tomcat以后tomcat不能自动解压,因为之前启动tomcat,webapps下已经存在项目目录,所以只能将其删除,然后在进行部署。具体解决办法:

在tomcat 的 bin目录下修改catalina.bat文件,在“rem ---------------------------------------------------------------------------”后加上下面这两句话。

cd D:\software\apache-tomcat-6.0.32\webapps
for %%a in (*.war) do rd /q /s "%%~na"
然后还需优化tomcat6:采用NIO方式
<Connector port="10080" protocol="org.apache.coyote.http11.Http11NioProtocol"

               connectionTimeout="20000"

               redirectPort="10443" />
哈哈,妈妈再也不用担心我加班部署项目了

 

 

 

 参考资料:

http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/?cmp=dwskl&cpb=dw&ct=dwcon&cr=cn_CCID&ccy=cn#major3

http://blog.csdn.net/leijiantian/article/details/7916483

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: