我是靠谱客的博主 贤惠汽车,最近开发中收集的这篇文章主要介绍jenkins搭建_搭建Jenkins+tomcat+maven+Gitlab持续部署/回滚系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1421b12a38286499049231091c5646b1.png

作者:刘辉

方式:投稿

一、安装环境

主机名

IP

所需软件/依赖包

用途

内存/CPU

Jenkins

192.168.200.1

Jenkins、maven、jdk、tomcat、git

发布服务器

4GB/4个

Gitlab

192.168.200.2

GItlab、Jdk、tomcat

代码存储/测试机-1

4GB/4个

Test-2

192.168.200.3

Tomcat、jdk

测试机-2

1G/2个

二、总体流程介绍:

使用Jenkins拉取Gitlab上面代码使用Maven进行打包,在使用Jenkins里面规定好shell脚本进行发布/回滚

三、软件下载地址:

Jenkins:

http://mirrors.jenkins.io/war-stable/latest/jenkins.war

Maven:

https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

JDK:

https://www.oracle.com/webapps/redirect/signon?nexturl=https://download.oracle.com/otn/java/jdk/8u251-b08/3d5a2bb8f8d4428bbe94aed7ec7ae784/jdk-8u251-linux-x64.tar.gz

Tomcat:

wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz

Gitlab:

Gitlab使用网络yum部署

四、具体实施

1、Jenkins机器操作

Jdk+maven+tomcat+jenkins搭建

[root@Jenkins ~]# mkdir /soft/ && cd /soft/

[root@Jenkins soft]# wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

[root@Jenkins soft]#  wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz

[root@Jenkins soft]# wget https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

[root@Jenkins soft]# JDK手动下载拖到服务器

[root@Jenkins soft]# ls

apache-maven-3.6.3-bin.tar.gz  apache-tomcat-8.5.57.tar.gz  jdk-8u211-linux-64_(1).tar.gz  jenkins.war

建立软件解压目录

[root@Jenkins soft]# mkdir /application/

1.1: 安装git和jdk

[root@Jenkins ~]# yum -y install git

[root@Jenkins soft]# tar xf jdk-8u211-linux-64_(1).tar.gz

[root@Jenkins soft]# mv jdk1.8.0_211/ /application/jdk

[root@Jenkins soft]# echo "export JAVA_HOME=/application/jdk" >> /etc/profile

[root@Jenkins soft]# echo "PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile

[root@Jenkins soft]# echo "export JAVA_HOME PATH" >> /etc/profile

[root@Jenkins soft]# java -version

java version "1.8.0_211"

Java(TM) SE Runtime Environment (build 1.8.0_211-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

1.2:安装Maven

[root@Jenkins ~]# cd /soft/

[root@Jenkins soft]# tar xf apache-maven-3.6.3-bin.tar.gz

[root@Jenkins soft]# mv apache-maven-3.6.3 /application/maven

[root@Jenkins maven]# cd /application/

[root@Jenkins application]# ls

jdk  maven

[root@Jenkins application]# echo "export MVN_HOME=/application/maven" >> /etc/profile

[root@Jenkins application]# echo "export PATH=$PATH:$MVN_HOME/bin" >> /etc/profile

[root@Jenkins application]# source /etc/profile

[root@Jenkins application]# mvn --version

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)

Maven home: /application/maven

Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /application/jdk/jre

Default locale: zh_CN, platform encoding: UTF-8

OS name: "linux", version: "3.10.0-1062.el7.x86_64", arch: "amd64", family: "unix"

#设置修改maven源地址(默认的源为国外,下载速度非常慢 会导致报错,修改为阿里源即可 )

[root@Jenkins ~]# vim /application/maven/conf/settings.xml

#在158行下写入以下内容

159  

160       aliyun

161       central

162       aliyun maven

163       https://maven.aliyun.com/nexus/content/groups/public/

164    

1.3: 安装tomcat

[root@Jenkins application]# cd /soft/

[root@Jenkins soft]# ls

apache-maven-3.6.3-bin.tar.gz  apache-tomcat-8.5.57.tar.gz  jdk-8u211-linux-64_(1).tar.gz  jenkins.war

[root@Jenkins soft]# tar xf apache-tomcat-8.5.57.tar.gz

[root@Jenkins soft]# mv apache-tomcat-8.5.57 /application/tomcat

#启动tomcat进行测试

[root@Jenkins soft]# /application/tomcat/bin/startup.sh

Using CATALINA_BASE:   /application/tomcat

Using CATALINA_HOME:   /application/tomcat

Using CATALINA_TMPDIR: /application/tomcat/temp

Using JRE_HOME:        /application/jdk

Using CLASSPATH:       /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar

Tomcat started.

#查看是否启动成功

[root@Jenkins soft]# netstat -anpt | grep 8080

tcp6       0      0 :::8080                 :::*                    LISTEN      23459/java

tcp6       0      0 ::1:53282               ::1:8080                TIME_WAIT   -    

#启动成功可以去网页访问一下http://ip:8080

5d0e331097c387a1b918cbc6e40ad406.png

!!!表示启动成功

1.4: 把Jenkins.war包放到tomcat的webapps文件下进行启动jenkins,并编写tomcat脚本

[root@Jenkins soft]# cp jenkins.war /application/tomcat/webapps/

#编写tomcat启动脚本/etc/init.d/tomcat

[root@Jenkins soft]# cat /etc/init.d/tomcat

#!/bin/bash

# description: Tomcat is a Java Servlet Container

TOMCAT_HOME=/application/tomcat

start () {

TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`

if [ -z $TOMCAT_PID ];then

     source   /etc/profile

     /bin/bash $TOMCAT_HOME/bin/startup.sh

else

   echo "$0 is  running"

fi

}

stop () {

TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`

if [ -z $TOMCAT_PID ];then

       echo "$0 is not running"

else

       echo "shutting down $0"

       kill -9 "$TOMCAT_PID" && echo "PID $TOMCAT_PID killed."

fi

}

status () {

TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`

if [ -z $TOMCAT_PID ];then

       echo "$0 is not running"

else

       echo "$0 is running PID is $TOMCAT_PID"

fi

}

case $1 in

start)

start

#tail -f $TOMCAT_HOME/logs/catalina.out

;;

stop)

stop

;;

status)

status

;;

restart)

stop

start

#tail -f $TOMCAT_HOME/logs/catalina.out

;;

*)

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

;;

esac

1.5:Jenkins去访问网页,去下载推荐依赖包访问格式http://ip:8080/jenkins

190d5b70c12c74c3a244e195917a915f.png

根据图中提示去Jenkins机器获得jenkins随机密码

[root@Jenkins soft]# cat /root/.jenkins/secrets/initialAdminPassword

54f885045e774d6e9f405461cfd7c35a

输入密码完成之后在页面点击继续会出现下面这个页面点击安装推荐插件

8404e91ea9ef7a860e43e4969b176a29.png

如果有几个失败的请重试,不然到后面麻烦 ----》设置用户名

9eed62bf9704a4817e6e80360b46563f.png

1.6:到这里jenkins搭建完成,咱们在配置上jdk和maven的绝对路径

adcf168bb4eb6bd31c65288a87adf777.png

找到jdk、maven这两个选项根据自己目录进行填写

886b0a5df495aaf24255773a9aa3ca83.png

1.7: Jenkins为两台测试机器进行分发密钥:

[root@Jenkins ~]# ssh-copy-id 192.168.200.2

[root@Jenkins ~]# ssh-copy-id 192.168.200.3

!!!!到这里Jenkins已经搭建好,搭建完Gitlab和测试机器上面的tomcat就进行测试

2.Gitlab机器操作

    1. 附带测试机-1安装

2.1新建 /etc/yum.repos.d/gitlab_gitlab-ce.repo,

[root@Gitlab ~]# cd /etc/yum.repos.d/

[root@Gitlab yum.repos.d]# cat gitlab_gitlab-ce.repo

[gitlab-ce]

name=Gitlab CE Repository

baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/

gpgcheck=0

enabled=1

[root@Gitlab yum.repos.d]# yum clean all && yum makecache

2.2 安装gitlab并且初始化,进行简单配置

[root@Gitlab yum.repos.d]# yum -y install gitlab-ce

#初始化gitlab,时间较长

[root@Gitlab yum.repos.d]# gitlab-ctl reconfigure

#由于gitlab克隆默认地址不对。这里需要修改成自己的地址

[root@Gitlab ~]# vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

acf7763a8433508843d9df2b1d22a86a.png

#修改完配置之后重启Gitlab

[root@Gitlab ~]# gitlab-ctl restart

2.3 登陆Gitlab网页版,建立一个简单项目访问格式http://ip

4008285b5deeae5e588e3de485ebde54.png

2.4: 建立简单项目

ec1b68c0e7768aeb670ae6108ebb168c.png

d61f1fb42fe3d265d0488fa7640aa37a.png

随便找一个git客户端进行测试使用命令如下

49562938b9f561cd38fa801aa7c3f70f.png

[root@Jenkins ~]# git clone http://192.168.200.2/root/test.git

正克隆到 'test'...

warning: 您似乎克隆了一个空版本库。

[root@Jenkins ~]# cd test/

[root@Jenkins test]# touch README.md

[root@Jenkins test]# git add README.md

[root@Jenkins test]# git commit -m "add README"

*** Please tell me who you are.

Run

git config --global user.email "you@example.com"

git config --global user.name "Your Name"

to set your account's default identity.

Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@Jenkins.(none)')

#设置这个git的名字和邮箱地址。

[root@Jenkins test]#   git config --global user.email "you@example.com"

[root@Jenkins test]#   git config --global user.name "Your Name"

[root@Jenkins test]# git commit -m "add README"

[master(根提交) 6ef6564] add README

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 README.md

[root@Jenkins test]# git push -u origin master

Username for 'http://192.168.200.2': root

Password for 'http://root@192.168.200.2':

Counting objects: 3, done.

Writing objects: 100% (3/3), 213 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To http://192.168.200.2/root/test.git

* [new branch]      master -> master

分支 master 设置为跟踪来自 origin 的远程分支 master。

通过上面可以看出gitlab正常可以服务。去网页查看一下是否正常

5efd96ccacd5dfd63703994ab97db8c7.png

以有数据,Gitlab服务正常运行

2.5建立一个正式项目到后面提供给Jenkins使用,需要给jenkins提供地址

f2c8a3cec0c6fc10b4c39d49ed813a1f.png

34bf4b1d87a7bb65b9bb972c22000e97.png

根据下图提示,进行测试看看项目正常不正常

2707f9250aff7d78b6e142ed50f7ff09.png

[root@Jenkins ~]# git clone http://192.168.200.2/root/hello-word-war.git

正克隆到 'hello-word-war'...

warning: 您似乎克隆了一个空版本库。

[root@Jenkins ~]# cd hello-word-war

[root@Jenkins hello-word-war]# touch README.md

[root@Jenkins hello-word-war]# git add README.md

[root@Jenkins hello-word-war]# git commit -m "add README"

[master(根提交) e652e10] add README

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 README.md

[root@Jenkins hello-word-war]# git push -u origin master

Username for 'http://192.168.200.2': root

Password for 'http://root@192.168.200.2':

Counting objects: 3, done.

Writing objects: 100% (3/3), 213 bytes | 0 bytes/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To http://192.168.200.2/root/hello-word-war.git

* [new branch]      master -> master

分支 master 设置为跟踪来自 origin 的远程分支 master。

根据测试新建项目可用

我在码云上找了一个未打包的war包项目,感谢提供Elvin

项目地址为: https://gitee.com/almi/helloworld.git

把这个的地址克隆下来发布到自己的gitlab操作如下

[root@Jenkins ~]# git clone  https://gitee.com/almi/helloworld.git

正克隆到 'helloworld'...

remote: Enumerating objects: 58, done.

remote: Counting objects: 100% (58/58), done.

remote: Compressing objects: 100% (47/47), done.

remote: Total 58 (delta 17), reused 0 (delta 0), pack-reused 0

Unpacking objects: 100% (58/58), done.

[root@Jenkins ~]# ls

anaconda-ks.cfg  hello-word-war  helloworld  jenkins.war  test

[root@Jenkins ~]# ls

anaconda-ks.cfg  hello-word-war  helloworld  jenkins.war  test

[root@Jenkins ~]# cd helloworld/

[root@Jenkins helloworld]# ls

build.sh  Dockerfile  pom.xml  README.md  src

[root@Jenkins helloworld]# mv * /root/hello-word-war/

mv:是否覆盖"/root/hello-word-war/README.md"?y

[root@Jenkins helloworld]# cd

[root@Jenkins ~]# cd hello-word-war/

[root@Jenkins hello-word-war]# git add *

[root@Jenkins hello-word-war]# git commit -m "转移代码"

[master 61d1c94] 转移代码

7 files changed, 83 insertions(+)

create mode 100644 Dockerfile

create mode 100644 build.sh

create mode 100644 pom.xml

create mode 100644 src/main/webapp/WEB-INF/web.xml

create mode 100644 src/main/webapp/index.html

create mode 100644 src/main/webapp/index.jsp

[root@Jenkins hello-word-war]# git push origin master

Username for 'http://192.168.200.2': root

Password for 'http://root@192.168.200.2':

Counting objects: 15, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (9/9), done.

Writing objects: 100% (13/13), 2.02 KiB | 0 bytes/s, done.

Total 13 (delta 0), reused 0 (delta 0)

To http://192.168.200.2/root/hello-word-war.git

e652e10..61d1c94  master -> master

登陆Gitlab看看是否上传成功:

940c66d6729e3bf4d1c227a31a6a8f4c.png

已经上传成功,把文中我圈出来的地方复制下来等会拿到jenkins上面

(1)测试机-1安装

[root@Gitlab ~]# mkdir /application

[root@Gitlab ~]# mkdir /soft

[root@Gitlab soft]#

wget https://downloads.apache.org/tomcat/tomcat-8/v8.5.57/bin/apache-tomcat-8.5.57.tar.gz

[root@localhost soft]#  JDK手动下载拖到服务器

[root@Gitlab soft]# ls

apache-tomcat-8.5.57.tar.gz  jdk-8u211-linux-64_(1).tar.gz

[root@Gitlab soft]# tar xf jdk-8u211-linux-64_(1).tar.gz

[root@Gitlab soft]# mv jdk1.8.0_211/ /application/jdk

2.6 设置JDK环境变量

[root@Gitlab soft]# tail -n 3/etc/profile

export JAVA_HOME=/application/jdk

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME PATH

[root@Gitlab soft]# source /etc/profile

[root@Gitlab soft]# java -version

java version "1.8.0_211"

Java(TM) SE Runtime Environment (build 1.8.0_211-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

2.7 搭建tomcat并且修改tomcat端口号改为8000,写启动脚本,不改会和gitlab冲突

[root@Gitlab soft]# tar xf apache-tomcat-8.5.57.tar.gz

[root@Gitlab soft]# mv apache-tomcat-8.5.57 /application/tomcat

[root@Gitlab soft]# vim /application/tomcat/conf/server.xml

9b449170f6e187698caa6f7f2be8a33e.png

#t退出保存编写tomcat启动脚本

[root@Gitlab soft]# cat /etc/init.d/tomcat

#!/bin/bash

# description: Tomcat is a Java Servlet Container

TOMCAT_HOME=/application/tomcat

start () {

TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`

if [ -z $TOMCAT_PID ];then

     source   /etc/profile

     /bin/bash $TOMCAT_HOME/bin/startup.sh

else

   echo "$0 is  running"

fi

}

stop () {

TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`

if [ -z $TOMCAT_PID ];then

       echo "$0 is not running"

else

       echo "shutting down $0"

       kill -9 "$TOMCAT_PID" && echo "PID $TOMCAT_PID killed."

fi

}

status () {

TOMCAT_PID=`ps -ef |grep "$TOMCAT_HOME" |grep -v "grep" |awk '{print $2}'`

if [ -z $TOMCAT_PID ];then

       echo "$0 is not running"

else

       echo "$0 is running PID is $TOMCAT_PID"

fi

}

case $1 in

start)

start

#tail -f $TOMCAT_HOME/logs/catalina.out

;;

stop)

stop

;;

status)

status

;;

restart)

stop

start

#tail -f $TOMCAT_HOME/logs/catalina.out

;;

*)

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

;;

esac

#赋予权限

[root@Gitlab soft]# chmod +x /etc/init.d/tomcat

#启动tomcat并且访问tomcat

[root@Gitlab soft]# /etc/init.d/tomcat start

234bafc766c05c313d58716e22c3c306.png

3: Test-2重复测试机-1安装即可

(不再演示test-2测试机安装)

4: Jenkins新建一个maven项目

4.1: 安装maven插件

c13e4ef028551380967824707b3e0764.png

b7e932da7811a6747a6cc7955b3e6bc4.png

4.2: 等待安装完成,新建一个maven项目

7f3fb79e90dda7bdb20e9b321b0c7648.png

4.3: 设置两个参数,是添加两个Choince Parameter参数 填充内容如下图

e1cdc7653f5d5bd62a3f3d80d27d498a.png

再添加一个文本内容

c729ae17e44e3670882f9c8a7084b0ca.png

设置Git地址

056787f6057ca3d5cf6dd8e2de8894ea.png

填写maven打包命令

ef321df6b7a9b9a8e0db2a7911f57150.png

添加shell脚本

01a693120324d23f26826aa9e0b71606.png

脚本内容如下

##Deploy tomcat

test_host="192.168.200.2"

stag_host="192.168.200.3"

war_bak="/data/war/bak"

tomcat_deploy="/application/tomcat/webapps"

#WAR_PATH="${WORKSPACE}/${MODULE_NAME}/target/*.jar"

WAR_PATH="${WORKSPACE}/${MODULE_NAME}/target/*.war"

port="8000"

if [ "${git}" = "" ];then

echo "请输入git版本 #############"

exit 1

else

## 判断发布 or 回滚

if [ "${status}" = "Deploy" ];then

### 判断是否为测试环境

   if [ "${deploy}" = "test" ];then

           ### 构建主机

              for i in ${test_host}

                do

       ssh ${i} "mkdir -p ${war_bak}/${JOB_NAME}/${git}"

       scp ${WAR_PATH} ${i}:${war_bak}/${JOB_NAME}/${git}/ROOT.war

       ssh ${i} rm -rf ${tomcat_deploy}/*

       ssh ${i} cp ${war_bak}/${JOB_NAME}/${git}/ROOT.war ${tomcat_deploy}

       ssh ${i} /etc/init.d/tomcat  restart

         ### 判断tomcat是否正常      

             for http in `seq 1 5`

              do

                       tomcat_status=`curl -I ${i}:${port} -s|awk -F "[ ]" '{print $2}' |sed -n '1p'`

                   if  [[ "$tomcat_status" -ne 200 ]] || [[ "$tomcat_status" = "" ]];then

                       echo -e "请稍等,服务启动中........"

                             sleep 4

                     else

                       echo -e "${i}环境发布正常,返回值[${tomcat_status}] "

                             break

                     fi

                 done

                     if [[ "${tomcat_status}" -ne 200 ]] || [[ "${tomcat_status}" = "" ]];then

                         if [[ "${tomcat_status}" = "" ]];then

                            echo -e " 构建 ${i}服务启动异常 "

                             exit 1

                         fi

                             echo -e "构建 ${i}环境发布异常,返回值[${tomcat_status}] "

                     fi

             done

               echo -e " 本次构建${test_host}主机,本次环境 ${deploy} "

## 判断为预发布环境

   elif [ "${deploy}" = "stag" ];then

              for i in "${stag_host}"

                do

       ssh ${i} "mkdir -p ${war_bak}/${JOB_NAME}/${git}"

       scp ${WAR_PATH} ${i}:${war_bak}/${JOB_NAME}/${git}/ROOT.war

       ssh ${i} rm -rf ${tomcat_deploy}/*

       ssh ${i} cp ${war_bak}/${JOB_NAME}/${git}/ROOT.war ${tomcat_deploy}

       ssh ${i} /etc/init.d/tomcat  restart

         ### 判断tomcat是否正常      

                    for http in `seq 1 5`

                  do

                       tomcat_status=`curl -I ${i}:${port} -s|awk -F "[ ]" '{print $2}' |sed -n '1p'`

                   if  [[ "$tomcat_status" -ne 200 ]] || [[ "$tomcat_status" = "" ]];then

                       echo -e "请稍等,服务启动中........"

                             sleep 5

                     else

                       echo -e "构建 ${i}环境发布正常,返回值[${tomcat_status}]"

                             break

                     fi

                 done

                     if [[ "${tomcat_status}" -ne 200 ]] || [[ "${tomcat_status}" = "" ]];then

                         if [[ "${tomcat_status}" = "" ]];then

                     echo -e "构建 ${i}服务启动异常"

                     exit 1

                       fi

                       echo -e "构建 ${i}环境发布异常,返回值[${tomcat_status}]"

                   fi

       done

              echo -e "本次构建${stag_host}主机,本次环境 ${deploy}"

  fi

### 回滚操作

elif [[ "${status}" = "RollBack" ]];then

 ### 判断回滚环境及主机

           if [ "${deploy}" = "test" ];then

             for i in ${test_host}

             do

               ssh ${i}  "[ -d ${war_bak}/${JOB_NAME}/${git} ]"

                     if [ $? -ne '0' ];then

                           echo -e "git commit 回滚目录不存在,环境${deploy} 错误主机${i}"

                           exit 3

                       else

                           echo -e "准备回滚操作  本次回滚环境${deploy} 回滚主机${i}"

                           sleep 3

                     fi

                ssh ${i} "mkdir -p ${war_bak}/${JOB_NAME}/${git}_${status}_rollback/"

                ssh ${i} "cp -r ${tomcat_deploy}/* ${war_bak}/${JOB_NAME}/${git}_${status}_rollback/"

                ssh ${i} "rm -rf ${tomcat_deploy}/*"

                ssh ${i} "cp -r ${war_bak}/${JOB_NAME}/${git}/*.war ${tomcat_deploy}/"

                ssh ${i} /etc/init.d/tomcat  restart

                  ### 判断tomcat是否正常      

             for http in `seq 1 5`

             do

                tomcat_status=`curl -I ${i}:${port} -s|awk -F "[ ]" '{print $2}' |sed -n '1p'`

                if  [[ "$tomcat_status" -ne 200 ]] || [[ "$tomcat_status" = "" ]];then

                       echo -e "请稍等,服务启动中........"

                       sleep 5

                else

                       echo -e "构建 ${i}环境发布正常,返回值[${tomcat_status}]"

                       break

                fi

             done

                 if [[ "${tomcat_status}" -ne 200 ]] || [[ "${tomcat_status}" = "" ]];then

                   if [[ "${tomcat_status}" = "" ]];then

                     echo -e "构建 ${i}服务启动异常"

                     exit 1

                   fi

                     echo -e "构建 ${i}环境发布异常,返回值[${tomcat_status}]"

                fi

             done

           elif [ "${deploy}" = "stag" ];then

             for i in ${stag_host}

             do

                ssh ${i}  "[ -d ${war_bak}/${JOB_NAME}/${git} ]"

                     if [ $? -ne '0' ];then

                           echo -e "git commit 回滚目录不存在,环境${deploy} 错误主机${i}"

                           exit 3

                       else

                           echo -e "准备回滚操作  本次回滚环境${deploy} 回滚主机${i}"

                           sleep 3

                     fi

                ssh ${i} "mkdir -p ${war_bak}/${JOB_NAME}/${git}_${status}_rollback/"

                ssh ${i} "cp -r ${tomcat_deploy}/* ${war_bak}/${JOB_NAME}/${git}_${status}_rollback/"

                ssh ${i} "rm -rf ${tomcat_deploy}/*"

                ssh ${i} "cp -r ${war_bak}/${JOB_NAME}/${git}/*.war ${tomcat_deploy}/"

                ssh ${i} /etc/init.d/tomcat  restart

                  ### 判断tomcat是否正常      

             for http in `seq 1 5`

             do

                tomcat_status=`curl -I ${i}:${port} -s|awk -F "[ ]" '{print $2}' |sed -n '1p'`

                if  [[ "$tomcat_status" -ne 200 ]] || [[ "$tomcat_status" = "" ]];then

                       echo -e "请稍等,服务启动中........"

                       sleep 5

                else

                       echo -e "构建 ${i}环境发布正常,返回值[${tomcat_status}] "

                       break

                fi

             done

                 if [[ "${tomcat_status}" -ne 200 ]] || [[ "${tomcat_status}" = "" ]];then

                   if [[ "${tomcat_status}" = "" ]];then

                     echo -e "构建 ${i}服务启动异常"

                     exit 1

                   fi

                     echo -e "构建 ${i}环境发布异常,返回值[${tomcat_status}]"

                fi

             done

           ### 判断测试环境fi结束

           fi

fi

#### fi是判断是否有git地址的结束

fi

添加完脚本保存退出

9800377a5077a05a8f465dceb8484737.png

这个git地址是需要去gitlab上面获取的

98084ffa976d8e169af88e4ee5f16ccb.png

填写完git commit号之后就开始构建

d6cc0c42a73db1ee449a50fbd1ee0d0e.png

蓝色表示构建成功,红色就gg了

构建完成之后去访问升级的及其这个地方test我在脚本定义的是192.168.200.1:8000

看看升级是否成功

dd47cf91424e059d972dc59ca14b4baf.png

表示升级成功!!

添加点内容再次升级

root@Jenkins ~]# cd hello-word-war/

build.sh    Dockerfile  .git/       pom.xml     README.md   src/

[root@Jenkins ~]# cd hello-word-war/src/main/webapp/

[root@Jenkins webapp]# ls

index.html  index.jsp  WEB-INF

#修改内容,修改完成之后提交到gitlab上面,去gitlab重新获取新的commit号再复制到jenkins,再次升级

[root@Jenkins webapp]# vim index.html

[root@Jenkins webapp]# git add index.html

[root@Jenkins webapp]# git commit -m "update index.html"

[master 8b70643] update index.html

1 file changed, 1 insertion(+)

[root@Jenkins webapp]# git push origin master

Username for 'http://192.168.200.2': root

Password for 'http://root@192.168.200.2':

Counting objects: 11, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (3/3), done.

Writing objects: 100% (6/6), 469 bytes | 0 bytes/s, done.

Total 6 (delta 1), reused 0 (delta 0)

To http://192.168.200.2/root/hello-word-war.git

61d1c94..8b70643  master -> master

去gitlab获取新的commit号,复制到jenkins

453df2d0f8f013467bc06e38319049f3.png

复制到Jenkins,可以看到正在构建,构建成功去在去访问

39d02d2815a640a96fd7cd078f15938c.png

57e059406999139b0d2f6b8e18094653.png

再次访问已经升级成功

去gitlab找到上一次的commit号进行回滚操作,看看回滚正不正常

9ce95767b8d00d25180ec6ab21219a6b.png

复制这个commit号去jenkins进行回滚操作

1b953c4643b586506bf67e7224304ad1.png

构建完成之后去看看是否回滚成功

1eb8ee3632efa73853283cdf1c1fbecb.png

已经看到回滚成功

abd412546fcb6b7ca004535eb62831db.png

自动化一键升级已经构成

参考文章:

https://blog.51cto.com/14227204/2492464

本文PDF和WORD版已经放星球中

【来稿说明】:

本公众号宗旨是一个公益性的平台,属于大家锻炼的平台,不能只展示我个人的,所以欢迎有才华的人士来稿。 大家写文档投稿,也需要占用一定的个人时间,且现在的生活节奏较快,能乐于分享,牺牲自己的宝贵时间,真的很难得。所以,龙哥决定根据个人经济情况及投稿文章质量,每次投稿,打赏的稿费定在 5元-50元 之间,请有兴趣者,不要介意钱太少,或者后续也可以采用赠送书籍的形式。

来稿邮箱:942511321@qq.com

来稿声明:须自己本人原创,否则后果自行承担。未在其他平台发布过。

END

你花了   ·  来阅读

点个 36bcabd970e03a6d4a5e577a347a417f.gif 再走吧~

最后

以上就是贤惠汽车为你收集整理的jenkins搭建_搭建Jenkins+tomcat+maven+Gitlab持续部署/回滚系统的全部内容,希望文章能够帮你解决jenkins搭建_搭建Jenkins+tomcat+maven+Gitlab持续部署/回滚系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部