Jenkins自动化部署

一、安装Jenkins

  1. 安装JDK环境

源码安装jdk1.8及以上版本,环境变量vim /etc/profile写在最后面如下:

export JAVA_HOME=/usr/local/jdk1.8.0_144

export JRE_HOME=/usr/local/jdk1.8.0_144/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$SCRIPT_HOME:$PATH

我配置的jdk版本就是1.8的

 

  1. 下载Jenkins

我这里选择下载war包进行安装,自我感觉非常的简单易操作!

官网下载:https://jenkins.io/index.html

我这里下载的版本是2.112

 

  1. 安装Tomcat

下载地址:http://mirrors.hust.edu.cn/apache/tomcat

 我安装的版本是tomcat8,把之前的jenkins.war拷到webapps下,启动tomcat。我用的8080端口访问地址为http://IP:8080/jenkins

Jenkins自动化部署

####安装上面的提示查看密码,输入密码

Jenkins自动化部署

######我选择第一个,第二个也可以这样装的包少一点。安装的插件都在/root/.jenkins/plugins/下

Jenkins自动化部署

######开始安装插件

Jenkins自动化部署

Jenkins自动化部署

Jenkins自动化部署

#######至此jenkins安装完毕!

 

二、安装Maven(用来构建项目)

     官网地址:http://maven.apache.org/download.cgi

     我安装的是Apache Maven 3.2.5

     配置环境变量:vim  /etc/profile 写到最后

     MAVEN_HOME=/usr/local/apache-maven-3.2.5

export MAVEN_HOME

export PATH=${PATH}:${MAVEN_HOME}/bin

 

三、安装git(用来取gitlab上的代码)

     下载地址:https://github.com/git/git/releases

     我安装的版本是git-2.3.0

     配置环境变量:vim  /etc/profile 写到最后

     export PATH=/usr/local/git/bin:$PATH

 

四、配置Jenkins

    Jenkins自动化部署

Jenkins自动化部署

Jenkins自动化部署

Jenkins自动化部署

选择可选插件进行搜索安装插件有

Git plugin

SSH Plugin

Maven integration Plugin

Deploy to Container Plugin

 

五、构建项目

     点击新建任务 起一个test名字 选择构建一个maven项目

     Jenkins自动化部署

Jenkins自动化部署

######如果没做以下操作肯定会报错的

Jenkins自动化部署

######这块填写gitlab的私钥!!!完成之后如下图

Jenkins自动化部署

Jenkins自动化部署

Jenkins自动化部署

###看一下我的脚本内容:

[[email protected] ~]# cat /opt/web.sh

#!/bin/bash

source /etc/profile

TOMCAT_HOME=/data/server/tomcat-gw/webapps

 

JENKINS_HOME=/root/.jenkins/workspace/yilucaifu-open/yilucaifu-web/target

 

DATE=$(date +%Y-%m-%d_%H:%M)

 

mv $TOMCAT_HOME/yilucaifu /data/back-web/yilucaifu.$DATE

scp -r 60.60.1.222:$JENKINS_HOME/yilucaifu.war $TOMCAT_HOME

unzip -d $TOMCAT_HOME/yilucaifu $TOMCAT_HOME/yilucaifu.war

#\cp -f /opt/web_web.xml/web.xml $TOMCAT_HOME/yilucaifu/WEB-INF

\cp -f /opt/web_jdbc/jdbc-context.xml $TOMCAT_HOME/yilucaifu/WEB-INF/conf

rm -rf $TOMCAT_HOME/*.war

/data/script/tomcat_gw.sh restart

 

[[email protected] ~]# cat /data/script/tomcat_gw.sh

#!/bin/bash

TOMCAT_HOME=/data/server/tomcat-gw

DATE=$(date +%F)

pid=`ps aux | grep tomcat-gw | grep -v grep | awk '{print $2}'`

str=$"\n"

sstr=$(echo -e $str)

if [ $# -ne 1 ];then

echo "Usage: $0  {start|stop|restart}"

exit 1

fi

case $1 in

 start)

 $TOMCAT_HOME/bin/catalina.sh start

 tail -f $TOMCAT_HOME/logs/catalina."$DATE".out &

  TAIL_PID=$(ps aux | grep "tail -f $TOMCAT_HOME/logs/catalina."$DATE".out" | grep -v grep | awk '{print $2}')

  echo "TAIL_PID is $TAIL_PID"

  sleep 25 && kill -9 $TAIL_PID  &

  sleep 30  && echo "$sstr"

 ;;

 stop)

 echo "pid= $pid"

 echo "now kill tomcat pid $pid"

 kill -9 $pid

 if [ $? -eq 0 ];then

 echo "Tomcat has stopped"

 fi

 ;;

 restart)

 echo "pid= $pid"

 echo "now kill tomcat pid $pid"

 kill -9 $pid

 $TOMCAT_HOME/bin/catalina.sh start

 sleep 1

  tail -f $TOMCAT_HOME/logs/catalina."$DATE".out &

  TAIL_PID=$(ps aux | grep "tail -f $TOMCAT_HOME/logs/catalina."$DATE".out" | grep -v grep | awk '{print $2}')

  echo "TAIL_PID is $TAIL_PID"

  sleep 25 && kill -9 $TAIL_PID  &

  sleep 30  && echo "$sstr"

        echo -e "\033[32m Continue to check the log,please execute the command: \033[0m"

        echo -e "\033[32m tail -f $TOMCAT_HOME/logs/catalina."$DATE".out \033[0m"

 

 ;;

 *)

 echo "Usage: $0  {start|stop|restart}"

 exit 1

 ;;

esac

 

Jenkins和 60.60.1.223互做了免密登录,在jenkins上可以直接用/usr/bin/ssh [email protected]要执行的命令" /opt/web.sh 在60.60.1.223上执行这个脚本

过程:jenkins调用git把Gitlab上的代码下载到jenkins服务器,maven构建成war包,调用ssh运行shell脚本完成备份,停服务,清webapps,拷war包到tomcat下,起服务,ok!