美文网首页
jenkins部署Java项目

jenkins部署Java项目

作者: 肥四_F4 | 来源:发表于2020-06-19 18:59 被阅读0次

Java项目部署概述

1.什么是Java项目

简单来说就是使用Java编写代码,我们将其称为java项目

2.java项目需要maven编译

由于java编写打代码是无法直接在服务器上运行的,需要使用maven工具进行打包.
简单理解:Java源代码就像汽车的一堆散件,必须组中才是一辆完整的汽车,这里的“组装汽车的过程”就可以理解是“Maven编译打包”的过程

3.实现自动化构建java项目前,先手动实现java项目

首先大家对java项目不熟悉,其次要想实现自动发布代码,必需先会手动

我们先模拟开发提交java源码-->推送至gitlab-->运维使用mvn手动编译-->最后推送至wat至web集群(完整的发布流程) QQ图片20200619105550.png

Java项目部署

1.搭建java集群环境 ( Ansible | ⼿动 )

  1. 安装web集群的tomcat服务
  2. 安装nginx充当负载均衡,进⾏调度

环境部署

web节点

#tomcat集群配置(请关闭web集群上的nginx){7.8都要配}
[root@web01 ~ 11:08:55]# yum install java -y
[root@web01 ~ 11:11:09]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.36/bin/apache-tomcat-9.0.36.tar.gz   #下载tomcat9版本的包
[root@web01 ~ 11:15:19]# mkdir /soft
[root@web01 ~ 11:15:27]# tar xf apache-tomcat-9.0.36.tar.gz -C /soft  #将解压的文件放在/soft/中
[root@web01 ~ 11:15:51]# ln -s /soft/apache-tomcat-9.0.36/ /soft/tomcat

负载均衡

[root@lb01 ~ 11:07:59]# vim /etc/nginx/conf.d/tomcat.oldben.com.conf

upstream java { 
        server 172.16.1.7:8080;
        server 172.16.1.8:8080;
}

server { 
        listen 80;
        server_name tomcat.oldben.com;

        location / {
                proxy_pass http://java;
                include proxy_params;
        }
}

[root@lb01 ~ 11:25:28]# nginx -t
[root@lb01 ~ 11:29:13]# systemctl reload nginx
#配置windowns的hosts劫持
10.0.0.5 tomcat.oldben.com

1.提交代码(开发人员)

1)在gitlab上创建一个java仓库

QQ图片20200619114335.png

2)模拟开发本地提交代码至仓库

在windowns上进行代码推送
tar xf hello-world-war.tar.gz
cd hello-world-war
git remote -v   #查看是否有远程仓库的地址
git remote remove origin   #移除原有的远程仓库地址
git remote -v # 查看是否已经删除原有的远程仓库地址
git add .
git commit -m "java"
 git remote add origin git@gitlab.oldben.com:dev/hellow-word-demo.git #在远程推送是先要添加远程仓库地址
git remote -v # 查看是否已经添加上远程仓库的地址
git push origin master #进行远程推送

2.手动发布代码(运维人员)

2.1)第一次需要先克隆项目(后期就直接git pull 就行)

2.2)安装maven工具,对源码包进行编译

2.3)通过scp将war包推送至tomcat指定的站点目录

2.4)重启集群的tomcat

#使用jenkins服务器。因为之前添加过公钥了
[root@jenkins ~ 10:19:28]# git clone git@gitlab.oldben.com:dev/hellow-word-demo.git
[root@jenkins ~ 12:09:03]# cd hellow-word-demo/

#打包
[root@jenkins ~/hellow-word-demo 12:10:15]# yum install maven -y  #下载编译的软件
[root@jenkins ~/hellow-word-demo 12:14:36]# mvn package   #通过mvn把当前目录下的所有打成war包  {配置完成后 mvn clean package }
[root@jenkins ~/hellow-word-demo 12:14:36]# mvn clean package
#它产生的war包在当前目录里产生一个target的里面

#清理站点目录
[root@jenkins ~/hellow-word-demo 12:30:15]# ssh root@172.16.1.7 "rm -rf /soft/tomcat/webapps/ROOT"
[root@jenkins ~/hellow-word-demo 12:31:01]# ssh root@172.16.1.8 "rm -rf /soft/tomcat/webapps/ROOT"

#推送war包至站点目录,并改名为ROOT.war
[root@jenkins ~/hellow-word-demo 12:31:35]# scp target/*.war root@172.16.1.7:/soft/tomcat/webapps/ROOT.war 
[root@jenkins ~/hellow-word-demo 12:33:30]# scp target/*.war root@172.16.1.8:/soft/tomcat/webapps/ROOT.war

#重启tomcat
[root@jenkins ~/hellow-word-demo 12:33:36]# ssh root@172.16.1.7 "pkill java"
[root@jenkins ~/hellow-word-demo 12:36:00]# ssh root@172.16.1.8 "pkill java"
[root@jenkins ~/hellow-word-demo 12:33:36]# ssh root@172.16.1.7 "/soft/tomcat/bin/startup.sh"
[root@jenkins ~/hellow-word-demo 12:36:00]# ssh root@172.16.1.8 "/soft/tomcat/bin/startup.sh"

默认的Maven源为国外,下载速度非常慢,修改成阿里源可提高速度
https://www.cnblogs.com/kret12345/p/9572080.html

jenkins⾃动化发布:

( jenkins能拉取代码-->jenkins可以调⽤maven编译项⽬--->Shell拿到war包,发布到web集群。)


QQ截图20200619135126.png QQ截图20200619135731.png QQ截图20200619140954.png QQ截图20200619140557.png QQ截图20200619140557.png QQ截图20200619142102.png

脚本

[root@jenkins ~ 15:00:32]# vim /scripts/java_deploy.sh 


Date=$(date +%F-%H-%M)
Web_Server="172.16.1.7 172.16.1.8"
Web_Name=ROOT-${Date}
Web_Dir=/opt
#打包

cd ${WORKSPACE} && \

for ip in ${Web_Server}
do
        #推送数据包
        scp -rp target/*.war root@$ip:${Web_Dir}/${Web_Name}.war
        #登录集群节点解压
        ssh root@${ip} "cd ${Web_Dir} && \
                mkdir -p ${Web_Name} && \
                unzip ${Web_Name}.war -d ${Web_Name} && \
                rm -f ${Web_Name}.war && \
                rm -rf /soft/tomcat/webapps/ROOT && \
                ln -s ${Web_Dir}/${Web_Name} /soft/tomcat/webapps/ROOT && \
                pkill java && \
                /soft/tomcat/bin/startup.sh"
done

自动(构建触发器生成令牌)

http://jenkins.oldben.com:8080/project/hellow-word-java
8936ace1f61da9691e7ce9717a42b336

在jenkins 是上点点点

QQ截图20200619170625.png QQ截图20200619170700.png

再配置gitlab
项目 --> 用户设置--> webhooks


44.png
测试

在gitlab上点或者代码更新

5.png
#更新代码的方式i测试
vim src/main/webapp/index.jsp
git add .
git commit -m "xiaobaoverynice"
git push origin master

进化到标签

6.png 9.png 8.png

编写脚本

[root@jenkins ~ 18:03:46]# vim /scripts/java_deploy_tag.sh 

#!/usr/bin/bash

Date=$(date +%F-%H-%M)
Web_Server="172.16.1.7 172.16.1.8"
Web_Name=ROOT-${Date}-${git_version}
Web_Dir=/opt
#打包

cd ${WORKSPACE} && \

for ip in ${Web_Server}
do
        #推送数据包
        scp -rp target/*.war root@$ip:${Web_Dir}/${Web_Name}.war
        #登录集群节点解压
        ssh root@${ip} "cd ${Web_Dir} && \
                mkdir -p ${Web_Name} && \
                unzip ${Web_Name}.war -d ${Web_Name} && \
                rm -f ${Web_Name}.war && \
                rm -rf /soft/tomcat/webapps/ROOT && \
                ln -s ${Web_Dir}/${Web_Name} /soft/tomcat/webapps/ROOT && \
                pkill java && \
                /soft/tomcat/bin/startup.sh"
done

充当开发人员提交各个版本的代码、提交

#发布1.1版本
vim src/main/webapp/index.jsp
 git add .
 git commit -m "oldben-v1.1"
 git push origin master
 git tag -a "v-1.1" -m "1.1"
 git push origin --tags
#发布1.2版本
vim src/main/webapp/index.jsp
 git add .
 git commit -m "oldben-v1.2"
 git push origin master
 git tag -a "v-1.2" -m "1.2"
 git push origin --tags
#发布1.3版本
vim src/main/webapp/index.jsp
 git add .
 git commit -m "oldben-v1.3"
 git push origin master
 git tag -a "v-1.3" -m "1.3"
 git push origin --tags

再测试

基于tag标签进行回退

创建一个freestyle项目,来进行java的回退


33.png 55.png 66.png

脚本

[root@jenkins /opt 18:54:26]# vim /scripts/java_rollback.tag.sh 

#!/usr/bin/bash
Tomcat_Dir=/soft/tomcat/webapps/ROOT
Web_Server="172.16.1.7 172.16.1.8"
Web_Dir=/opt

for ip in ${Web_Server}
do
         ssh root@${ip} "[ -d ${Web_Dir}/ROOT-*-${git_version} ] && \
                 rm -f ${Tomcat_Dir} && \
                 ln -s ${Web_Dir}/ROOT-*-${git_version} ${Tomcat_Dir} && \
                 pkill java && \
                 /soft/tomcat/bin/startup.sh"
done

相关文章

网友评论

      本文标题:jenkins部署Java项目

      本文链接:https://www.haomeiwen.com/subject/eqcvxktx.html