我这边使用jenjins实现springboot项目的自动打包,远程部署功能
具体流程是:
1:代码修改后,提交到gitee仓库后,触发jenkins自动构建生成新的jar包
2:jenkins将jar发送到远程服务器
3:通过脚本启动项目
目前1,2两个步骤都执行成功,但是3项目启动时无法成功
下面我是jenkins中的配置
启动脚本如下:
#!/bin/bash
source /etc/profile
#jar所在目录
JAR_PATH=/usr/local/app/javademo
#jar名称
JAR_NAME=xn-demo-0.0.1-SNAPSHOT
#结束进程
echo "查询进程id-->$JAR_NAME"
PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
echo "得到进程ID:$PID"
for id in $PID
do
kill -9 $id
done
echo "结束进程完成"
echo "服务启动开始"
#运行jar
cd $JAR_PATH
chmod 777 $JAR_NAME.jar
nohup java -jar $JAR_PATH/$JAR_NAME.jar &
echo "服务运行成功"
后面我在启动脚本上加上了这段之后,项目就神奇的可以启动成功了,但具体什么原因还不清楚
#!/bin/bash
source /etc/profile
#jar所在目录
JAR_PATH=/usr/local/app/javademo
#jar名称
JAR_NAME=xn-demo-0.0.1-SNAPSHOT
#结束进程
echo "查询进程id-->$JAR_NAME"
PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
echo "得到进程ID:$PID"
for id in $PID
do
kill -9 $id
done
echo "结束进程完成"
echo "服务启动开始"
#运行jar
cd $JAR_PATH
chmod 777 $JAR_NAME.jar
nohup java -jar $JAR_PATH/$JAR_NAME.jar &
PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
#此行很重要,不加服务无法启动,原因未知
echo "得到进程ID:$PID"
echo "服务运行成功"
jenkins中日志
经过上面的修改也实现了项目启动,但是是什么原因造成的不能启动,以及加上“PID=ps -ef | grep "$JAR_NAME" | grep -v grep | awk '{print $2}'
”就可以启动的原因也不清楚,有没有懂的,求赐教
因为端口占用了。你重启一下服务器,你会发现你第一次部署绝对成功的。这个其实是要查询出来已经运行的java程序,干掉他。重新运行的意思
我发现,你上线个脚本,运行到大部分,最后那里就没运行了。
你确定你的方式没写错吗。。。
其实,写一个关于服务的启动脚本,用脚本来控制不更好吗?
我以前是用 sysemctl 来控制的。