linux环境使用Jenkins自动部署springBoot Jar包

我们经常使用Jenkins脚本来自动部署我们的Java工程打成的jar包,下面介绍一种简单的自动部署脚本,可使用于多模块工程。

第一种是调用远程脚本启动

具体的脚本如下:

#!/bin/bash
#java env
#shell脚本有时候调用linux的环境变量会有问题,所以这里还是把用到的java环境再设置一下
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home

#app name 为了确保脚本通用
APP_NAME=$2

SERVICE_DIR=/Users/accName/java/$APP_NAME
SERVICE_NAME=$3
APP_JAR=$SERVICE_DIR/$SERVICE_NAME/build/libs/$SERVICE_NAME\-0.0.1-SNAPSHOT.jar
#启动app的时候,将进程的pid保存在这里,方便以后杀死进程用
APP_PID=$SERVICE_NAME\.pid

cd $SERVICE_DIR
echo "jar path: $APP_JAR"

case "$1" in

    start)
        #/dev/null 就不会有nohup.out文件了。
        nohup $JAVA_HOME/bin/java -Xms32m -Xmx128m -jar $APP_JAR >/dev/null 2>&1 &
        #将pid写入文件
        echo $! > $SERVICE_DIR/$APP_PID
        echo "===== start $SERVICE_NAME"
        ;;

    stop)
        kill `cat $APP_PID`
        #删除掉pid文件
        rm -f $SERVICE_DIR/$APP_PID
        #查看是不是杀死进程了
        sleep 5
                #获得进程号,复制号两边不能留空格
                pid=`ps -ef | grep -w $SERVICE_NAME | grep -v grep | awk '{print $2}'`
        #判断相等两边要留空格
        if ["$pid" == ""];then
            echo "=== kill successfully "
        else
            echo "===== kill fail and try to kill -9"
            echo "====  the pid is  $pid"
            kill -9 $pid
        fi
        echo "stop finished"
        ;;
    *)
        echo "please use start or stop 参数"
        ;;
esac
exit 0

此脚本适合多模块构建的程序,输入不同的参数,就可以实现不同服务的Jar包部署
如:
./appServer.sh -a websocket -s socket-web -o start

就可以启动websocket项目中的socket-web服务
-a:appName应用名称
-s:serviceName服务名称
-o:operation操作状态

如果jdk是默认的,就单独部署一个模块下的jar包,直接使用下面启动即可:

nohup java -jar application.jar >out.txt &

第二种Jenkins本地加载脚本启动

第二种方法,就是直接在Jenkins中编写启动脚本
下面是一个简单的启动部署脚本

#!/bin/bash

echo "start load application......."

cd  /home/feify/.jenkins/workspace/web-docker/build/libs

SERVICE_NAME=avatar-web-docker-1.0.jar

 kill `cat $APP_PID`
 #删除掉pid文件
 rm -f app.pid
 #查看是不是杀死进程了
 sleep 5
 #获得进程号,复制号两边不能留空格
 pid=`ps -ef | grep -w $SERVICE_NAME | grep -v grep | awk '{print $2}'`
 #判断相等两边要留空格
 if ["$pid" == ""];then
 	echo "=== kill successfully "
 else
 	echo "===== kill fail and try to kill -9"
 	echo "====  the pid is  $pid"
 	kill -9 $pid
 fi
 	echo "stop old process finished"


echo "stat new APP version"
nohup java -Xms32m -Xmx128m -jar $SERVICE_NAME >/dev/null 2>&1 & 
echo $! > app.pid
echo " start successful"

实际使用中,可以使用环境变量列表中的值来替换这些具体的应用名称,工作空间等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章