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

在这里插入图片描述
安装部署参考文档
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、新建任务
在这里插入图片描述
2、填写项目名,以java maven项目为例,项目名务必与项目中的包名保持一致
在这里插入图片描述
3、任务配置
(1)项目描述一般与gitlab上保持一致
在这里插入图片描述

(2)gitlab配置
在这里插入图片描述
第一次使用Jenkins需要点添加,添加自己的gitlab账号和密码
指定部署的代码分支
在这里插入图片描述
(3)构建触发器
使用第四项
在这里插入图片描述在这里插入图片描述
此时复制GitLab webhook URL:
http://192.168.240.25:8088/project/webrtc
到gitlab对应项目下进行GitLab webhook配置
输入URL和Secret Token即可,然后点击add webhook
在这里插入图片描述
在这里插入图片描述
个人Secret Token生成方法
https://www.cnblogs.com/gongxr/p/9257434.html
(4)构建环境
在这里插入图片描述
(5)Post Steps
在这里插入图片描述

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

sudo ssh root@192.168.240.25 "/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'启动完毕

根据项目名称、端口号进行修改
在这里插入图片描述
【远程部署】

sudo ssh root@192.168.240.25 "/usr/share/jenkins/
jenkins_remote.sh webrtc 9000"

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

#!/bin/bash
source /etc/profile
server=root@192.168.240.131
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)最后点应用或保存进行保存退出
在这里插入图片描述
(7)进行测试,若返回Hook executed successfully:HTTP 200,则表示gitlab代码提交后会自动触发Jenkins相应任务执行。
在这里插入图片描述
(8)到Jenkins上查询任务具体执行情况。
在这里插入图片描述
点进去可以看具体日志,若没有相应报错信息则表示部署成功,进一步查看swagger-ui是否正常访问。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值