4 - 使用SpringBoot+Maven+Gitlab实现Jenkins自动化部署

自动化部署Java程序的流程:SpringBoot+Maven+Gitlab

 

一、需求产生的背景

当前大多数公司都采用前后端分离的开发模式,当接口发生变动或者修复了Bug时,就会产生代码变动,开发就需要重新提交代码,因此涉及到频繁的打包和测试环境重新部署

手动打包非常繁琐,常规步骤如下:

  1. 开发人员:做了代码修改,提交修改后的代码到Gitlab服务器

  2. 测试人员:登陆Gitlab服务器,拉取代码并执行打包操作(打成war包或者jar包)

  3. 测试人员:将打好的jar包上传到测试环境所在的linux服务器

  4. 测试人员:查看当前测试环境的应用程序是否在运行、关闭当前程序、使用新jar包启动测试环境

  5. 测试人员:观察测试环境日志,查看应用程序是否启动成功

  6. 如果有开发同事继续提交代码,则整个 1到5步骤 无限循环执行 ------ 浪费了大量的工作时间

二、需求想要实现的功能

使用Jenkins工具将手动打包流程使用自动化进行实现,大概思路如下:

三、Jenkins服务器搭建及基本配置

安装部署好Jenkins之后,在ManageJenkins里面进行如下配置:

1、系统配置

配置测试环境所在Linux服务器的相关信息(即jar包要放去哪里)

2、配置全局安全

3、全局工具配置

1)配置Maven

2)配置JDK

3)配置Git

还可以根据实际需要配置Ant、Docker等工具,具体根据需要

4、配置必要插件 

1)Publish over SSH插件(命令模式)

2)Deploy to container Plugin(现在一般都使用SpringBoot,已经内置了Tomcat) ---- Tomcat管理员模式

其它插件暂时不需要

四、自动化部署实战

1、Jenkins服务器上创建项目和配置

1)创建一个工程

2)General(基础配置): 配置代码所在Gitlab服务器相关信息

3)源码管理:  配置Git工具相关

4)构建触发器:   即Gitlab服务器向Jenkins服务器发送该回调地址(需要做映射)

5)构建环境(无需配置)

6)构建

7、构建后操作

1)即配置jar包打好后需要被发送去哪里,到达之后的启动和停止操作

2)这里需要提前在部署了测试环境的服务器上配置好路径,写好启动和停止项目的脚本,并设置为可以执行的脚本

其中stop.sh和start.sh脚本代码分别如下:

1 #!/bin/bash
2 echo "Stop Procedure : demo2-0.0.1-SNAPSHOT.jar"
3 pid=`ps -ef |grep java|grep demo2-0.0.1-SNAPSHOT.jar|awk '{print $2}'`
4 echo 'old Procedure pid:'$pid
5 if [ -n "$pid" ]
6 then
7 kill -9 $pid
8 fi
1 #!/bin/bash
2 export JAVA_HOME=/usr/java/jdk1.8.0_131
3 echo ${JAVA_HOME}
4 echo 'Start the program : demo2-0.0.1-SNAPSHOT.jar' 
5 chmod 777 /home/ldp/app/demo2-0.0.1-SNAPSHOT.jar
6 echo '-------Starting-------' 
7 cd /home/ldp/app/
8 nohup ${JAVA_HOME}/bin/java -jar demo2-0.0.1-SNAPSHOT.jar &
9 echo 'start success'

2、Linux测试环境所在服务器配置

1、指定应用的存放路径

2、上传 启动脚本和停止脚本

3、Gitlab代码所在服务器配置

进入具体的项目->Settings->Webhook(填写回调地址)

五、测试是否生效

1、修改并提交代码到Gitlab服务器,触发构建

2、去Gitlab服务器上查看是否已经触发构建

3、在Jenkins服务器的控制台查看是否正在构建

4、在Jenkins服务器的控制台查看本次构建的控制台日志

5、去测试环境所在的Linux服务器上查看新代码是否上传成功

6、在测试环境所在Linux服务器使用命令jps,查看应用程序是否启动

7、浏览器上访问测试环境,查看新功能是否生效

8、修改代码再次提交,确认整套自动化部署是否依然正常执行

 

 

至此,代码部署全流程已经使用自动化实现,在日常工作中,无论是开发进行的开发代码修改和部署流程,还是测试进行的自动化代码的修改和执行,都可以使用同样的思路进行自动化实现

 

posted @ 2022-09-11 22:52  xiaoyanhahaha  阅读(387)  评论(0编辑  收藏  举报