【运维知识高级篇】超详细的Jenkins教程3(Maven项目上线全流程)

上篇文章给大家介绍了Maven编译的内容,讲解了用Jenkins如何去集成Maven,这篇文章给大家介绍另一个的Maven项目,实现gitlab提交代码后,自动进行Maven编译,自动推送至web主机进行代码上线的效果。

一、主机介绍

主机名IP
Web0110.0.0.7
Jenkins10.0.0.201

二、在Web主机部署Tomcat和数据库

1、安装JDK

rz jdk-8u181-linux-x64.rpm
rpm -ivh jdk-8u181-linux-x64.rpm

2、安装Tomcat

rz apache-tomcat-8.0.27.tar.gz
tar zvxf apache-tomcat-8.0.27.tar.gz
mv /application/apache-tomcat-8.0.27 /usr/local/tomcat

3、修改Tomcat配置提升启动速度

vim /usr/java/jdk1.8.0_181-amd64/jre/lib/security/java.security
第117行修改为  securerandom.source=file:/dev/urandom

4、启动Tomcat

/usr/local/tomcat/bin/startup.sh

5、安装数据库

yum -y install mariadb
systemctl start mariadb.service 
mysql_secure_installation
mysqladmin -uroot password 'root'
mysql -uroot -proot -e 'create database jeesns;'

# 下面我把jeesns的代码包放到web服务器了,正常情况下,如果代码在jenkins服务器,可以scp把sql文件拷贝过来,再执行sql
rz jeesns.tar.gz
tar xf jeesns.tar.gz -C /opt/
mysql -uroot -p1 jeesns < /opt/jeesns/jeesns-web/database/jeesns.sql

三、部署war包,简单展示Web页面

jeesns.tar.gz 下载链接放到文末了

[root@Jenkins ~]# tar xf jeesns.tar.gz -C /opt/
[root@Jenkins ~]# cd /opt/jeesns/
[root@Jenkins jeesns]# mvn clean
[root@Jenkins jeesns]# mvn package
[root@Jenkins jeesns]# scp target/jeesns-web.war 10.0.0.7:/usr/local/tomcat/webapps/ROOT
[root@Jenkins jeesns-web]# ssh 10.0.0.7 'cd /usr/local/tomcat/webapps/ROOT && unzip jeesns-web.war && /usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh '

等tomcat完全启动后,浏览器访问10.0.0.7的端口,就可以访问到了

在这里插入图片描述

四、新建Gitlab项目并推送代码

在这里插入图片描述

在这里插入图片描述

记录此处的镜像源,一会儿要在Jenkins里面用

在这里插入图片描述

按照指令提示执行这两个部分的命令

在这里插入图片描述

[root@Gitlab ~]# git config --global user.name "Administrator"
[root@Gitlab ~]# git config --global user.email "admin@example.com"
[root@Gitlab ~]# cd /data/jeesns/
[root@Gitlab jeesns]# git remote rename origin old-origin
[root@Gitlab jeesns]# git remote add origin git@10.0.0.200:root/JEESNS.git
[root@Gitlab jeesns]# git push -u origin --all
[root@Gitlab jeesns]# git push -u origin --tags

刷新浏览器可以看到上传的代码

在这里插入图片描述

在这里插入图片描述

五、配置Jenkins

1、新建Maven项目并进行配置

在这里插入图片描述
在这里插入图片描述

配置丢弃旧的构建

在这里插入图片描述

配置参数化构建
在这里插入图片描述

配置镜像源,此处报红色错误,可能是需要做jenkins到gitlab服务器的免密钥,配置通过版本号拉取代码

在这里插入图片描述
配置构建触发器

在这里插入图片描述

填写master,配置推送请求的规则,只有包含master字样的名称才会推送,点击Generate生成秘钥,将此秘钥记录下来
在这里插入图片描述

添加clean package指令,和执行指定位置的构建脚本的构建步骤

在这里插入图片描述

最终点击保存,点击保存后,将刚刚自动构建的秘钥复制到gitlab

在这里插入图片描述

六、编写脚本

在Jenkins中构建步骤指定的位置编写脚本。

[root@Jenkins ~]# cat /server/scripts/maven_JEESNS.sh
#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%M-%S)
CODE_DIR="/var/lib/jenkins/workspace/JEESNS"
WEB_DIR="/usr/local/tomcat/webapps"

get_code_scp(){
        ssh 10.0.0.7 "cd $WEB_DIR && mkdir java-${git_version}"
        cd $CODE_DIR && scp jeesns-web/target/*.war 10.0.0.7:$WEB_DIR/java-${git_version}
}


code_tarxf(){
        ssh 10.0.0.7 "cd $WEB_DIR/java-${git_version} &&  unzip *.war && rm -rf *.war"

}
ln_html(){
         ssh 10.0.0.7 "cd $WEB_DIR/  && rm -rf ROOT && ln -s  java-${git_version} ROOT  && /usr/local/tomcat/bin/shutdown.sh && /usr/local/tomcat/bin/startup.sh"
}

main(){

        get_code_scp;
        code_tarxf;
        ln_html;
}
if [ "$deploy_env" == "deploy" ];then
        if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then
            echo "构建失败该 $git_version 版本号已部署"
        else
        main
        fi
elif [ "$deploy_env" == "rollback" ];then
        ln_html
fi

七、测试Maven项目上线全流程

1、修改代码

[root@Gitlab jeesns]# vim jeesns-web/src/main/webapp/WEB-INF/templates/front/index.ftl 
...
                    <div class="panel-heading">
                        推荐阅读v1.0
                    </div>
...

2、推送代码

[root@Gitlab jeesns]# git add .
[root@Gitlab jeesns]# git commit -m "v1.0"
[root@Gitlab jeesns]# git tag -a v1.0 -m "v1.0"
[root@Gitlab jeesns]# git push -u origin v1.0

3、Jenkins选择版本部署
在这里插入图片描述
在这里插入图片描述
可以看到构建成功(因为马虎失败了两次,所以序号显示3)
在这里插入图片描述
4、查看v1.0部署效果并再次修改代码,推送代码,用Jenkins部署新版本
在这里插入图片描述

[root@Gitlab jeesns]# vim jeesns-web/src/main/webapp/WEB-INF/templates/front/index.ftl 
...
                    <div class="panel-heading">
                        推荐阅读v2.0
                    </div>
...
[root@Gitlab jeesns]# git add .
[root@Gitlab jeesns]# git commit -m "v2.0"
[root@Gitlab jeesns]# git tag -a v2.0 -m "v2.0"
[root@Gitlab jeesns]# git push -u origin v2.0

在这里插入图片描述
5、查看v2.0部署效果,并回滚v1.0查看效果

v2.0更改成功!

在这里插入图片描述

回滚的话是比较快的,不用去拉取代码,其实没有deploy和rollback的选项也可以,可以根据代码仓库与现有版本的版本号的大小去判断是部署还是回滚,除非是部署之前的版本,然后之前的版本也需要去代码仓库拉取代码,这种情况应该很少。
在这里插入图片描述
可以在此处查看

在这里插入图片描述
也可以在web后端服务器查看

[root@Web01 webapps]# ll
total 4
drwxr-x--- 16 root root 4096 Jun 30 10:44 docs
drwxr-x---  7 root root   99 Jun 30 10:44 examples
drwxr-x---  6 root root   79 Jun 30 10:44 host-manager
drwxr-xr-x  5 root root  126 Sep 28 15:40 java-v1.0
drwxr-xr-x  5 root root  104 Sep 28 15:50 java-v2.0
drwxr-x---  6 root root  114 Jun 30 10:44 manager
lrwxrwxrwx  1 root root    9 Sep 28 15:57 ROOT -> java-v1.0

也可以在页面上查看效果,就是tomcat重启太慢了,页面效果要等好久

在这里插入图片描述

也可以做个通知机制,企业微信给开发通知,等等吧,方式很多。


Maven项目练手代码下载链接:https://pan.baidu.com/s/1ifkGhh34uxhoTqmhf7e1lg?pwd=8464
我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是koten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值