一、Jenkins
1、概念
持续部署:关注点在于项目功能部署至服务器后可以运行,为下一步测试环节或最终用户正式使用做准备。
持续集成:关注点在于尽早发现项目整体运行问题,尽早解决。
持续交付:关注点在于研发团队的最新代码能够尽快让最终用户体验到。
2、好处
降低风险:一天中进行多次的集成,并做相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。
减少重复过程:产生重复过程有两个原因。一个是编译、测试,打包、部署等等固定操作都必须做,无法省略任何一个环节;另一个是一个缺陷没有及时发现,有可能导致后续代码的开发方向是错误的,要修复问题需要重新编写受影响的所有代码。而Jenkins等持续集成工具既可以把构建环节从手动完成转换为自动化完成,又可以通过增加集成频次尽早发现缺陷避免方向性错误。
任何时间、任何地点生成可部署的软件。
增强项目的可见性:持续集成能让开发者注意到趋势并进行有效的决策。有效的决策,持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统可以报告功能完成度和缺陷率;注意到趋势,由于经常集成,可以看到一些趋势,如构建成功或失败,总体品质以及其他的项目信息。
建立团队对开发产品的信心:持续集成可让开发者清楚知道每一次构建的结果,知道对团建的改动造成了哪些影响,结果如何。
二、JavaEE项目部署方式对比
1、手动部署
正如下图所示,手动部署在开发者提交或推送代码到版本控制服务器后,需要从版本控制服务器中检出最新的全部源码,打成war包,放入tomcat应用服务器,开启tomcat服务器,访问,一系列操作均需人工完成。
2、自动化部署
正如下图所示,搭建该自动化部署系统,需要三个部分组成 :
版本控制子系统:由Subversion/Git服务器构成,需要为开发项目创建对应版本库,然后编写钩子程序。
应用发布子系统:由JDK、Tomcat组成,用于项目的部署。
持续集成子系统:由JDK、Maven、Tomcat和运行在tomcat中jenkins的项目。
理解:既然分为三个部分,下面的讲解中也会分为三个部分一一讲解。该图中体现的是开发者提交或推送完代码后通过事先写好的钩子程序去通知持续集成子系统调用Maven插件去打包通过SVN/Git插件获取版本控制子系统中的最新源码,然后持续集成子系统再调用Deploy to web container插件将打包好的war部署到应用发布子系统中。相较于手动部署来说,这样开发人员只要事先完成一些Jenkins的一些配置,即可只要一点击提交或推送代码就能自动完成打包,部署到服务器,用户和测试人员就能马上看到效果。
三、Jenkins+SVN持续集成环境的搭建
1、环境组成
SVN子系统 和应用发布子系统 可参考前面的教程,本节主要介绍怎么使用Jenkins。
搭建持续集成子系统的虚拟机可直接复制前面已搭建的应用发布子系统,如果出现网络问题,可参考前面的CentOS中常见问题的解决办法 。
这样持续集成子系统就已经安装好了JDK和Tomcat,接下来只需要安装Maven和将Jenkins的war包放入Tomcat服务器运行即可。
2、CentOS上安装Maven
通过上传工具WinSCP将Maven压缩包上传到CentOS。
Maven Linux64位版本下载地址
提取码:uq4m
解压Maven到/usr/local下,删除本文件夹的压缩包,进入/usr/local目录下,修改文件夹apache-maven-3.5.0-bin名称为maven。
解压:tar - zxf apache- maven- 3.5 .0 -</