4 - 使用SpringBoot+Maven+Gitlab实现Jenkins自动化部署
自动化部署Java程序的流程:SpringBoot+Maven+Gitlab
一、需求产生的背景
当前大多数公司都采用前后端分离的开发模式,当接口发生变动或者修复了Bug时,就会产生代码变动,开发就需要重新提交代码,因此涉及到频繁的打包和测试环境重新部署
手动打包非常繁琐,常规步骤如下:
-
开发人员:做了代码修改,提交修改后的代码到Gitlab服务器
-
测试人员:登陆Gitlab服务器,拉取代码并执行打包操作(打成war包或者jar包)
-
测试人员:将打好的jar包上传到测试环境所在的linux服务器
-
测试人员:查看当前测试环境的应用程序是否在运行、关闭当前程序、使用新jar包启动测试环境
-
测试人员:观察测试环境日志,查看应用程序是否启动成功
-
如果有开发同事继续提交代码,则整个 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、修改代码再次提交,确认整套自动化部署是否依然正常执行
至此,代码部署全流程已经使用自动化实现,在日常工作中,无论是开发进行的开发代码修改和部署流程,还是测试进行的自动化代码的修改和执行,都可以使用同样的思路进行自动化实现