【基于Jenkins+Gitlab实现Springboot代码自动化部署】

【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第1张图片
安装部署参考文档
https://www.cnblogs.com/adnny/p/13570513.html
https://www.cnblogs.com/xiao987334176/p/11323795.html
https://blog.csdn.net/zhangjunli/article/details/108436980
1、新建任务
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第2张图片
2、填写项目名,以java maven项目为例,项目名务必与项目中的包名保持一致
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第3张图片
3、任务配置
(1)项目描述一般与gitlab上保持一致
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第4张图片

(2)gitlab配置
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第5张图片
第一次使用Jenkins需要点添加,添加自己的gitlab账号和密码
指定部署的代码分支
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第6张图片
(3)构建触发器
使用第四项
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第7张图片【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第8张图片
此时复制GitLab webhook URL:
http://192.168.240.25:8088/project/webrtc
到gitlab对应项目下进行GitLab webhook配置
输入URL和Secret Token即可,然后点击add webhook
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第9张图片
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第10张图片
个人Secret Token生成方法
https://www.cnblogs.com/gongxr/p/9257434.html
(4)构建环境
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第11张图片
(5)Post Steps
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第12张图片

输入shell脚本执行命令
【本地部署】

sudo ssh [email protected] "/usr/share/jenkins/jenkins.sh 9000 webrtc"

jenkins.sh 脚本如下

#!/bin/bash
source /etc/profile
project=$1
echo "项目名称为: " $project
port=$2
echo "端口号${port}"
package=$project-0.0.1-SNAPSHOT.jar
#先获取到运行项目的进程编号
#pid=`ps -ef |grep ${project} |grep -v grep |awk '{print \$2}'`
pid=`netstat -nlp | grep $port |awk '{print $7}' | cut -d"/" -f1`
echo "pid" $pid
if [ ! "${pid}" ];then
echo "没有找到'$project'的进程,无需 kill"
else
echo "kill -9 ${pid}"
kill -9 $pid
echo "找到'$project'的进程${pid},关闭该进程"
fi
cd /var/lib/jenkins/workspace/$project/target/
nohup java -jar $package >> nohup.out 2>&1 &
#newpid=`netstat -nlp | grep $port |awk '{print $7}' | cut -d"/" -f1`
newpid=`ps -ef |grep ${project} |grep -v grep |awk '{print \$2}'`
echo "'$project'启动完毕

根据项目名称、端口号进行修改
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第13张图片
【远程部署】

sudo ssh [email protected] "/usr/share/jenkins/
jenkins_remote.sh webrtc 9000"

jenkins_remote.sh 脚本如下:(需根据实际情况对 server、project、port 进行修改)

#!/bin/bash
source /etc/profile
server=[email protected]
echo "远程服务器地址: " $server
project=$1
echo "项目名称为: " $project
port=$2
echo "端口号${port}"
cd /var/lib/jenkins/workspace/$project/target/
package=$project-0.0.1-SNAPSHOT.jar
scp $package $server:/root/project/
ssh ${server} '
#先获取到运行项目的进程编号
pid=$(ps -ef|grep '$project'|grep -v grep|awk "{print \$2}")
if [ ! "${pid}" ];then
echo "没有找到'$project'的进程,无需 kill"
else
echo "kill -9 ${pid}"
kill -9 ${pid}
echo "找到'$project'的进程${pid},关闭该进程"
fi
cd /root/project/
if [ ! -d '$project' ];then
mkdir '$project'
else
echo "文件夹已经存在"
fi
mv -f '$package' '${project}'/
cd '$project'/
chmod 777 '$package'
echo `pwd`
nohup java -jar '$package' >> nohup.out &
newpid=$(ps -ef|grep '$project'|grep -v grep|awk "{print \$2}")
echo "'$project'启动完毕, 进程号${newpid}"
#退出远程连接
exit
'

(6)最后点应用或保存进行保存退出
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第14张图片
(7)进行测试,若返回Hook executed successfully:HTTP 200,则表示gitlab代码提交后会自动触发Jenkins相应任务执行。
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第15张图片
(8)到Jenkins上查询任务具体执行情况。
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第16张图片
点进去可以看具体日志,若没有相应报错信息则表示部署成功,进一步查看swagger-ui是否正常访问。
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第17张图片
【基于Jenkins+Gitlab实现Springboot代码自动化部署】_第18张图片

你可能感兴趣的:(jenkins,spring,boot,自动化,git)