教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

教你如何用Jenkins自动化部署项目(教程,从零到搭建完成)

置顶 2018年08月11日 21:18:18 龙之竹 阅读数 94080更多html

分类专栏: web项目部署java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接和本声明。linux

本文连接:http://www.javashuo.com/article/p-nxvfpfcz-ew.htmlgit

      最近在实习中接触了jenkins这个东西,因此花点时间了解了下。它能够在代码上传仓库(如github,gitee,gitlab)后,在jenkins(一个网站界面)中经过获取代码仓库中最新代码,进行自动化部署,而省去手动打包、上传服务器、部署这一系列步骤,很是方便。github

       下面教程分为如下几个部分:web

1、在你的本地电脑或者linux服务器上下载安装jenkins:

jenkins下载地址:https://jenkins.io/   下载网站的war包版本就行了shell

下载完后把它部署到你的tomcat上运行:放到tomcat的webapps目录下,启动tomcat(windows下双击startup.bat或者linux下运行sh startup.sh),而后经过浏览器访问,如个人电脑上访问:localhost:8080/jenkins 。启动后的界面以下:apache

而后到提示的文件中把里面的文本复制出来填到管理员密码中。vim

接着若是是在本地电脑跑,可能会出现:该jenkins实例彷佛已离线 提示,若是出现,是由于本地https访问不了的缘由。在浏览器中另打开一个界面http://localhost:8080/pluginManager/advanced,把升级站点中的url中的https改成http,保存更新。而后关掉tomcat服务器重启,就能够联网了。windows

        接下来选择安装推荐的插件,这个须要必定的时间。最后额外推荐安装两个插件,在系统管理中能够安装插件:

一、 Rebuilder

二、 Safe Restart

2、在linux服务器中安装git, maven,建立一个jenkens目录,配置git的公钥到你的github上,这些步骤是使用jenkins的前提。

     安装git的目的是在自动化部署前实时从git远程仓库中拉取最新的代码。在linux(我用的是centos系统)安装git:

yum install git

     生成密钥:

ssh-keygen -t rsa -C "youremail@abc.com"

    能够不设置密钥密码直接按三次回车。 把家目录中生成的公钥内容复制到github或其余仓库上。    

    安装maven的目的是经过项目中的pom.xml文件自动解决项目依赖问题,构建项目。linux中经过wget+下载连接下载maven的zip包而后解压便可。配置maven环境变量:

 
  1. vim /etc/profile

  2.  
  3. //在这个文件末尾加上

  4. export MAVEN_HOME=/root/maven3.4.5

  5. export PATH=$MAVEN_HOME/bin:$PATH

  6.  
  7. //保存后在命令行输入,启动配置

  8. . /etc/profile

    建立jenkins目录,用来存储拉取下来的项目代码等。

3、将Linux服务器注册到Jenkins上

一、开启服务器上的ssh服务,可经过 netstat -anp | grep :22命令查看是否开启

二、先来测试一下怎么在jenkins中操做远程服务器

在jenkins中选择系统管理——》新建节点

其中远程工做目录即你在Linux上建立的jenkins目录。在Credentials添加一个远程用户,输入你的远程机器用户名和密码保存。

点击TestEnv,启动代理。

在全局工具配置中配置git命令:

三、自动化部署过程原理:

因此须要编写一个shell脚原本执行这个过程。

具体的建立Jenkins任务的过程为

1.建立jenkins任务

2.填写Server信息

3.配置git参数

4.填写构建语句(shell脚本),实现自动部署。

4、建立自动化部署任务

一、编写shell部署脚本deploy.sh,并放到linux服务器中的jenkins目录下,在该目录下经过touch deploy.sh建立一个脚本,把下面的脚本复制到里面便可(到时每次自动部署都会执行它),脚本中的my-scrum为我要自动构建的项目名:

 
  1. #!/usr/bin/env bash

  2. #编译+部署项目站点

  3.  
  4. #须要配置以下参数

  5. # 项目路径, 在Execute Shell中配置项目路径, pwd 就能够得到该项目路径

  6. # export PROJ_PATH=这个jenkins任务在部署机器上的路径

  7.  
  8. # 输入你的环境上tomcat的全路径

  9. # export TOMCAT_APP_PATH=tomcat在部署机器上的路径

  10.  
  11. ### base 函数

  12. killTomcat()

  13. {

  14. #pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`

  15. #echo "tomcat Id list :$pid"

  16. #if [ "$pid" = "" ]

  17. #then

  18. # echo "no tomcat pid alive"

  19. #else

  20. # kill -9 $pid

  21. #fi

  22. #上面注释的或者下面的

  23. cd $TOMCAT_APP_PATH/bin

  24. sh shutdown.sh

  25. }

  26. cd $PROJ_PATH/my-scrum

  27. mvn clean install

  28.  
  29. # 停tomcat

  30. killTomcat

  31.  
  32. # 删除原有工程

  33. rm -rf $TOMCAT_APP_PATH/webapps/ROOT

  34. rm -f $TOMCAT_APP_PATH/webapps/ROOT.war

  35. rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war

  36.  
  37. # 复制新的工程到tomcat上

  38. cp $PROJ_PATH/scrum/target/order.war $TOMCAT_APP_PATH/webapps/

  39.  
  40. cd $TOMCAT_APP_PATH/webapps/

  41. mv my-scrum.war ROOT.war

  42.  
  43. # 启动Tomcat

  44. cd $TOMCAT_APP_PATH/

  45. sh bin/startup.sh

二、在jenkins上点击新建一个任务,填好任务名,填写运行的节点(上文中新建节点时建立的):

三、点击源码管理,填写github(或gitlab等)地址:

四、点击add,选择check out to a sub-directory ,添加源码下载到jenkins目录下的指定目录(能够命名为你的项目名):


五、填写构建任务时的shell脚本,而后保存,点击当即构建完成自动构建。(这里有一个坑,必定要给tomcat下全部sh文件加上x权限才能启动tomcat成功,具体为在tomcat目录上层执行chmod a+x  -R tomcat目录或者在tomcat的bin目录下执行chmod +x *.sh)

 
  1. #当jenkins进程结束后新开的tomcat进程不被杀死

  2. BUILD_ID=DONTKILLME

  3. #加载变量

  4. . /etc/profile

  5. #配置运行参数

  6.  
  7. #PROJ_PATH为设置的jenkins目录的执行任务目录

  8. export PROJ_PATH=`pwd`

  9. #配置tomcat所在目录

  10. export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum

  11.  
  12. #执行写好的自动化部署脚本

  13. sh /root/jenkins/deploy.sh

六、自动化构建成功:

七、后续代码若是有改动,只要push到github或者gitlab等上,在jenkins界面中再次执行构建任务就能够了,很是方便,自动化部署,不再用手动上传项目到服务器了。

5、解决一个tomcat关闭,全部tomcat都被关闭了的问题(若是你的jenkins也是安装的服务器上的其中一个tomcat中,就可能被莫名杀掉)

       这是由于全部的tomcat的关闭脚本(shutdown.sh或者说catalina.sh)都默认监听的是8005端口。只要进去tomcat目录下的conf目录下的server.xml文件中,将

 
  1. <Server port="8005" shutdown="SHUTDOWN">

  2. <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

  3. <!-- Security listener. Documentation at /docs/config/listeners.html

  4. <Listener className="org.apache.catalina.security.SecurityListener" />

  5. -->

中的8005端口改成不一样的端口,就不会一个tomcat关闭,全部的tomcat都被关闭了

6、之后能够在linux服务器中安装多个tomcat,来部署不一样的项目,分别使用不一样的端口,如我喜欢用8081,8082,8083等端口来解决多个tomcat端口冲突问题(在tomcat的conf目录下的server.xml中修改便可,默认为8080)。而后能够用jenkins来管理这些tomcat的自动化部署啦。

7、谢谢阅读,欢迎交流!

相关文章
相关标签/搜索