独角兽企业重金招聘Python工程师标准>>>
1.概要说明
为了开发人员和测试人员的解耦,让开发和测试流程更加便捷,所以采用jenkins+git+maven这套可持续性集成方案。
下图(图1)是设计图:
图1
2.准备工作
centos6+jdk-8u191-linux-x64.tar.gzapache-maven-3.5.0-bin.tar.gzapache-tomcat-8.5.35.tar.gzjenkins.war2.150.1服务器a.b.c的系统均是centos6.5、jdk用的1.8、服务器B的maven版本是3.5(用于jenkins构建项目时打包)、服务器B部署的jenkins是最新版本的jenkins2.150.X(X表示小版本号)。
3.具体实施
第一步:在服务器上安装jdk8,需要在profile加入全局环境变量(vim /etc/profile),当然也可以加针对用户的环境变量(vim ~/profile)两者配置一项,我采用的是全局环境变量
在服务器B上需要安装maven同样需要配置环境变量同时需要修改maven的setting.xml配置仓库地址和镜像地址(不懂可以自行百度)。在服务器C上安装tomcat,适当的修改tomcat的service.xml的配置文件(不懂可以自行百度),可以修改服务默认端口等,同时查看服务器的防火墙中是否开放了对应的端口,以免服务无法访问(vim/etc/sysconfig/iptables按照22的格式添加端口然后重启iptables即可,防火墙不会配置可以自行学习,简单的。)。在服务器B上同样步骤配置tomcat,配置好后,执行startup.sh文件测试,若能够正常启动,将tomcat目录下的webapp文件夹下的内容清空,将jenkins.war放入改目录下,启动jenkins,然后访问http://ip:port/jenkins/ 若显示界面则启动成功,进入界面先要安装一些插件,插件不会安装可自行百度,教程很多,顺便说一句,jenkins最主要的就是灵活运用各种插件。
第二步:配置服务器之间的ssh通讯协议,首先服务器B需要从服务器A获取代码,那么需要在服务器B上生成ssh密钥对(可以参考下面的博客/yueludanfeng/article/details/79330276),我默认你已经会使用github了,若不会先学习一下在官网上简单的注册个账号即可开通github,在个人的settings选项下配置ssh key将服务器B上的ssh密钥的公钥配置上去即可。服务器B需要通过ssh协议登陆服务器C从而传输构建好的war包到指定的tomcat目录下并且执行一段启动脚本。所以服务器B需要能够免密登陆到服务器C,那么服务器C需要将服务器B产生的公钥追加到authorized_keys文件中,authorized_keys文件在~/.ssh目录下没有需要自己新建一个。具体流程不会的可以参考博客(/chichuduxing/article/details/68491134),到目前为止,准备工作已经做完,jenkins可以正常启动了,三台服务器之间可以正常通讯了,剩下的就是具体怎么配置jenkins了。
第三步:配置jenkins,jenkins需要安装一些有关maven与ssh的插件,Maven Integration plugin、Publish Over SSH第一个插件是用来创建maven项目的,第二个插件是用来配置ssh协议的。
图2
如图2需要在系统管理里的全局工具中配置maven、git、jdk三个东西。
配置完后保存,返回系统管理页面打开系统配置,需要在里面配置一下ssh。
第一栏可以不配置,Path to Key配置服务器B私钥的地址,key配置服务器B私钥的内容,然后创建一个ssh server 填写服务器C的信息hostName配置ip, username配置登陆名,路径写tomcat的webapp路径。配置完成后可以开始创建maven项目了。
第四步:创建一个maven风格的项目,名字什么的自己定义即可,创建完成后配置该项目需要配置的点有:general、Source Code Management、Build Triggers、Build、Post Steps
如上图:general配置个名字即可自定、Source Code Management需要配置git,这里注意的是需要新建一个git的钥匙串,Build Triggers照着勾选即可,Build需要配置maven命令clean package -Dmaven.test.skip=true,Post Steps这个比较重要需要配置项目发布的一些信息,和发布后执行的一个脚本,用来远程控制服务器C启动tomcat,脚本内容如下:
以上亲自部署可以实施,有不足之处请大家包含以及指正,谢谢。