来看看 发表于 2018-1-8 07:22:30

Jenkins与Git持续集成&&Linux上远程部署Java项目

一、环境搭建

1、安装所需软件


[*]Jdk
[*]Maven
[*]Jenkins
[*]Tomcat
[*]Xshell
[*]git
  以上软件去官网下载,比较简单,不一一描述了

2、安装所需的jenkins插件


[*]Git plugin
[*]GitHub plugin      git插件,download代码至本地
[*]Mailer Plugin       邮件插件
[*]Publish Over SSH   远程访问Linux服务器插件
  打开jenkins—》系统管理—》管理插件—》可选插件,输入要下载的插件,勾选直接安装,安装完成页面勾选重启,插件安装成功
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217102500644-600072397.png

3、配置jdk\maven\tomcat环境变量
  路径:我的电脑---》属性—》高级系统设置—》环境变量


[*]Jdk环境变量配置
  JAVA_HOME: C:\Program Files\Java\jdk1.8.0
  CLASSPATH: .; %JAVA_HOME%\lib\dt.jar; %JAVA_HOME%\lib\tools.jar
  PATH: %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin


[*]Maven环境变量配置
  M2_HOME: C:\maven
  MAVEN_OPTS: -Xms256m -Xmx512m
  PATH: %M2_HOME%\bin


[*]Tomcat环境变量配置
  CATALINA_BASE:c:\tomcat
  CATALINA_HOME: c:\tomcat
  CLASSPATH : %CATALINA_HOME%\common\lib\servlet.jar
  PATH: %CATALINA_HOME%\bin; %CATALINA_HOME%\lib


[*] Linux环境变量配置
  修改etc/profile文件,文件末尾添加
# jdk1.8 settings
JAVA_HOME=/usr/java/jdk1.8.0_51
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH>#tomcat settings
CATALINA_HOME=/usr/local/tomcat
CATALINA_BASE=/usr/local/tomcat
export CATALINA_HOME CATALINA_BASE
保存,执行source /etc/profile生效
然后在tomcat/bin/目录下创建setenv.sh文件,文件内容如下
#!/bin/bash
CATALINA_HOME=/usr/local/tomcat
CATALINA_PID=$CATALINA_HOME/bin/CATALINA_PID
ID=`ps -ef | grep java | grep tomcat|awk '{print $2}'`
    echo $ID
    for>    do
   echo $id > $CATALINA_PID
    done

JAVA_OPTS=`-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m`
JAVA_HOME=/usr/java/jdk1.8.0_51
JRE_HOME=/usr/java/jdk1.8.0_51/jre
在tomcat/bin目录下创建CATALINA_PID文件
把setenv.sh文件内容copy至/bin/catalina.sh文件
Linux环境变量配置是为解决后面执行shell脚本时重启tomcat报错

4、修改maven配置文件,修改版本库地址和jdk版本
  修改配置文件:maven—>conf-->settings.xml
  jdk默认是被注释的,放开后,修改为当前安装的jdk版本,否则构建时会报错
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217103649769-736415169.png
  创建maven版本库地址,然后在settings.xml中添加版本库地址
  添加<localRepository>D:/repository</localRepository>一行代码,如图
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217103721207-928883637.png

5、配置远程tomcat站点,创建站点文件夹(存放war包)
  修改tomcat下server.xml文件
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217103759535-1794432241.png

二、构建java项目

1、设置jenkins全局变量
  打开jenkins,进入系统管理,
  lMaven\JDK\git安装目录,如图
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217103827800-98301133.png
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217103856472-249040454.png
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104041066-2017990380.png
  l配置邮件通知,此处的邮件地址要跟管理员一样,勾选发送邮件测试配置,输入收件人地址,若配置成功,会收到测试邮件
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104151191-720862106.png
  l选择要发布的具体位置,输入以下内容后,点击test configuration,验证是否连接成功
  SSH Server Name: 远程连接名字,随便起
  HostName:远程主机ip
  Usename:远程登录名
  Remote Directory:发布远程目录
  Passphrase/Password: 远程登录密码
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104229066-977484526.png

2、创建maven项目,修改配置项
  l新建job,选择构建一个maven项目
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104247800-2080207041.png
  l配置job


[*]源码管理:输入git地址
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104309832-1993390072.png


[*]构建触发器:勾选Build whenever a SNAPSHOT dependency is built,建立快照依赖关系
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104321082-1463785955.png


[*]构建文件:构建pom文件(pom相对路径,Jenkins识别路径至workspace)+构建命令clean install -P test/-P pro
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104332769-581211953.png


[*]远程发布信息:
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104437019-2064165258.png


[*]设置发送邮件通知,构建不稳定时和构建失败时发送邮件通知
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104505754-103281228.png

三、编写脚本并发布

1、编写shell脚本,脚本上传至远程机器

https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gifhttps://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif
  

#!/bin/bash  

  
export LANG
="en_US.UTF-8"  

  
PROJECT
=admin  

  
BACK_DIR
=/usr/local/autodeploy/back/$PROJECT  

  
TEMP_DIR
=/usr/local/autodeploy/temp/$PROJECT  

  
TOMCAT_HOME
=/usr/local/tomcat  

  
WEBAPPS
=webapps_jfadmin  

  

if [ -f $TEMP_DIR/$PROJECT.war ]; then  

  echo
"=======If temp exists war,finding tomcat PID======"  

  echo
"===================killing tomcat================="  

  ID
=`ps -ef | grep java | grep tomcat|awk '{print $2}'`  

  echo $ID
  

for>

do  

  kill
-9 $id  

  echo
"killed$id"  

  done
  

  echo
"===================killed tomcat==================="  

  echo
"===================shutdown tomcat==================="  

  #shutdown tomcat
  

  cd $TOMCAT_HOME
/bin  

  sh shutdown.sh
  

  
#sleep3
  

if [ -f $TOMCAT_HOME/$WEBAPPS/$PROJECT.war ]; then  

  echo
" If /usr/local/tomcat/webapps_jfadmin/admin.war exists,it will delete old war and its folder"  

  echo
"=================deleteing old war ================="  

  rm
-rf $TOMCAT_HOME/$WEBAPPS/$PROJECT.war  

  rm
-rf $TOMCAT_HOME/$WEBAPPS/$PROJECT  

else  

  echo
" ===================old war not exits==================="  

  fi
  

  

  echo
" Copying /usr/local/autodeploy/temp/admin.war to /usr/local/autodeploy/tomcat/webapps_jfadmin"  

  #echo
"===================copying new war==================="  

  cp $TEMP_DIR
/$PROJECT.war $TOMCAT_HOME/$WEBAPPS/$PROJECT.war  

  

  echo
" ===================backing war==================="  

  echo
" Creating the back folder "  

  mkdir
-p $BACK_DIR  

  echo
" Backing /usr/local/autodeploy/tomcat/webapps_jfadmin/admin.war to /usr/local/autodeploy/back/admin,and named by date"  

  cp $TOMCAT_HOME
/$WEBAPPS/$PROJECT.war $BACK_DIR/"$PROJECT"_`date +%Y%m%d%H%M%S`.war  

  

  #echo
"===================deleting temp file==================="  

  echo
" Deleting /usr/local/autodeploy/temp/admin/admin.war"  

  rm
-rf $TEMP_DIR/$PROJECT.war  

  #start tomcat
  

  echo
"===================starting tomcat==================="  

  cd$TOMCAT_HOME
/bin  

  shstartup.sh
  

  

  echo
" ===================finished!=========================="  

  
else
  

  echo "===================temp file not exits==================="
  

  
fi
  


shell脚本
2、发布
  进入jobs列表,点击构建即可
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104609504-569400336.png
  构建成功,如下图所示
https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104620847-1640753441.png

四、附属

4.1 Jenkins部署流程图
  https://images2015.cnblogs.com/blog/802992/201702/802992-20170217104720363-1002225183.png
页: [1]
查看完整版本: Jenkins与Git持续集成&&Linux上远程部署Java项目