设为首页 收藏本站
查看: 1561|回复: 0

[经验分享] Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署

[复制链接]

尚未签到

发表于 2017-12-25 23:33:30 | 显示全部楼层 |阅读模式
  自动部署过程:jenkins从svn拉取代码+maven去打war包+ansible去部署+重启tomcat。
  前情回顾:在前面的文章我的环境已经有Jenkins+ansible ,在加上我们公司有自己的SVN,我只要在本地安装个Tomcat就ok啦。
  其实也有Tomcat的,但我喜欢自己玩自己的,谁让我是菜鸟了呢,这其中的坑真的不少,希望能帮到初学者。
  一. 什么是Maven(简单说一种打包的工具)?
  Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
  Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
  你也许会问为什么是Maven,不是Ant。我们公司的java项目用的是pom文件。如果你的是built文件,那就能用ANT,为什么用POM,不是我这个小运维人员说的算的,你需要去找开发老大。
  1)官网下载Maven(jenkins的插件里面有maven,我觉得自己安装的可控性更高一些)
  root@debian :~# wget   http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
  2)解压下载的包
  root@debian :~# tar -xf apache-maven-3.5.0-bin.tar.gz  -C /usr/local/  
  3)简单验证一下
  root@debian :~#  mvn --version
  Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
  Maven home: /usr/local/apache-maven-3.5.0
  Java version: 1.7.0_71, vendor: Oracle Corporation
  Java home: /usr/local/jdk1.7.0_71/jre
  Default locale: zh_CN, platform encoding: UTF-8
  OS name: "linux", version: "3.16.0-4-amd64", arch: "amd64", family: "unix"
  4)接下来在jenkins里面配置一些环境(登录你的jenkins界面)
DSC0000.png

  标记的非常明显,点击系统管理。
DSC0001.png

  接下来点击Global Tool Configuration ,主要配置有下面几项
DSC0002.png

  提示: (1)这里的最好指一下setting文件,这个文件需要更改的,比如本地仓库放在那,打包过程用没用到nexus(私服),如果你不知道怎么改,问你们研发部门,他们都是行家。
  (2)在前面的文章里面我说过为什么jdk换成了7(其实是在setting文件里面定义的),为了和这个自动化上线的项目保持环境的一致行,其实8也兼容7,具体行不行我没有试验过呢。
  (3)如果你已经指定了本地的插件路径,就不要勾选自动安装那个选项。
DSC0003.png

  如果你的路径和我的不一样,需要修改成相对应的路径就ok啦。
  二.Jenkins的插件下载
  1)步骤和上面几乎差不多,点插件管理

  2)这里我就列出几个,你可以根据提示缺少那个插件你就安装那个
DSC0004.png

  因为我要用到playbook,所以要安装ansible插件。
DSC0005.png

  maven的本地仓库,不懂的话多去问问研发,少走点弯路。
DSC0006.png

  这个是svn的插件,因为总有一个版本控制,你是git,就去下载git的插件。
DSC0007.png

  这个插件有必要说一下,一开始我打算用这种tomcat热部署,后来查了查,这种部署方式有天然的缺陷,部署的次数多了以后会造成java的内存泄漏,再加上我们上线的所有环境不是都打在war包里面的,后来就放弃了,作为运维来说,个人觉得多一事不如少一事。
  三.项目的配置过程(只说对我有用的部分)
  1)在你的jenkins登录页面,点击新建
DSC0008.png

  2)构建一个maven项目(名字你随便起,建议最好有一点标识性)
DSC0009.png

  3)最后点击OK,来到下面的界面
DSC00010.png

  描述信息你可以随便写,甚至空着也可以的。
  4)SVN这里需要你有一个帐号,简单说就是能拉取代码
DSC00011.png

  5)构建触发器
DSC00012.png

  触发器的作用应该是自动化构建,它也可以像定时任务那样,每隔多长时间自动构建一次
  6)剩下直接上图
DSC00013.png

  说明:如果你不明白的话,多去查一查,具体什么意思,我也只是知道怎么用。
  四.Tomcat的安装
  1)官方下载Tomcat7(最新的版本应该是9,这里我下载的是7)
  root@debian1:~# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.77/bin/apache-tomcat-7.0.77.tar.gz
  说明: 如果你用debian自带的源安装tomcat,也可以。但你的目录结构和你解压二进制包的目录结构是不一样的,这是坑。用过debian的应该都知道,它把配置文件分的太细啦,当然信不信你说的算。
  2)解压Tomcat并启动Tomcat
  root@debian1:~# tar -xf  apache-tomcat-7.0.77.tar.gz  -C /usr/local/
  root@debian1:~# /usr/local/apache-tomcat-7.0.77/bin/startup.sh
  提示:因为我的jenkins占用着8080端口,在本机想启动Tomcat的话需要更改一下配置文件server.xml
  3)简单验证一下
  root@debian1:~# netstat -antlp |grep 8082
  tcp6       0      0 :::8082                 :::*                    LISTEN      11981/java
  五.Playbook的书写,代码奉上(水平较次,您将就着看)
  

- hosts: local  
tasks:
  

- name: "create the tmp directory!"  
command: mkdir
/usr/local/tmp  

- name: "delivery the war to the remote_host!"  
copy:
  
src
=/var/lib/jenkins/workspace/maven_test/target/oa.war  
dest
=/usr/local/tmp/  
- name: "unzip the war!"
  
command: unzip -qo /usr/local/tmp/oa.war -d  /usr/local/apache-tomcat-7.0.77/webapps/ROOT/
  
- name: "delete the tmp"
  
command: rm -rf /usr/local/tmp
  
- name: "stop the tomcat"
  
shell: "ps -ef |grep tomcat |grep /usr/local/apache-tomcat-7.0.77 | grep -v grep |awk ‘{print $2}‘ |xargs kill -9"
  
- name: "start the tomcat"
  
shell: chdir=/usr/local/apache-tomcat-7.0.77/bin nohup ./catalina.sh start &
  

  说明: (1)在上面的文件里面用startup.sh 启动tomcat起不来,用catalina.sh start &   就可以启动起来,具体什么原因我也不是很清楚,因为我觉得两种方式是一样的。
  (2)注意一下yaml(yml)文件的书写合适,还有就是jenkins自动构建的war包在workspace下有一个和你项目名称一样的文件夹,但war包的名字是由POM文件里面定义的,与jenkins是无关的。
  (3)在这里我是本地用ansible的copy模块,当然你也可以远程copy,但注意hosts文件定义该主机,免密钥登录等等,还有就是权限问题,需要特别注意,jenkins这个工具是一直在用jenkins这个普通用户在运行。
  六.构建Project
  1)构建你的项目
DSC00014.png

  2)可以查看过程的输出
DSC00015.png

  3)看到success 就大功告成啦(需要烧香拜佛的哟)
DSC00016.png

  其实还有很多功能,例如构建成功发邮件通知,sonar对java代码进行静态检查等等我只记录了一些我用到的。
  建议: (1) 如果没有成功,看相应的报错,有问题去解决问题,这么个流程我研究了两周,我老大说我进度慢,没办法,都是自己研究,我把过程记录就是希望和我一样的少踩点坑,欢迎来喷。
  (2)有句名言叫外事不懂问GOOGLE,内事不懂问度娘。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428063-1-1.html 上篇帖子: jenkins自动部署tomcat 下篇帖子: Jenkins安装部署及tomcat的入门介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表