微服务+Jenkins 简单的linux自动部署脚本

No.1  启停脚本

#!/bin/bash
## 加载配置,避免获取不到java_home 
source /etc/profile

SERVICE_HOME=项目路径
SERVICE_NAME=服务名称

cd $SERVICE_HOME/$SERVICE_NAME
PROG=$SERVICE_HOME/$SERVICE_NAME
PIDFILE=$SERVICE_HOME/$SERVICE_NAME/$SERVICE_NAME.pid  
JARFILE=$SERVICE_HOME/$SERVICE_NAME/$SERVICE_NAME.jar

  
status() {  
    if [ -f $PIDFILE ]; then  
        PID=$(cat $PIDFILE)  
        if [ ! -x /proc/${PID} ]; then  
            return 1  
        else  
            return 0  
        fi  
    else  
        return 1  
    fi  
}  
  
case "$1" in  
    start)  
        status  
        RETVAL=$?  
        if [ $RETVAL -eq 0 ]; then  
            echo "-----$PIDFILE exists, process is already running or crashed"  
            exit 1  
        fi  
        
        ##检测 java环境
        if [ ! -n $JAVA_HOME ]; then
           echo "-----Please check JAVA_HOME!"
           echo "-----Exist"
           exist 1
        else
           echo "-----Jave home: $JAVA_HOME"
           echo "-----Starting $PROG ..." 
           nohup java -server -Xms512m -Xmx512m -jar $JARFILE  > $SERVICE_NAME.log 2>&1 &

           RETVAL=$?
           if [ $RETVAL -eq 0 ]; then
               echo "-----$PROG is started"
               echo $! > $PIDFILE
               exit 0
           else
               echo "-----Stopping $PROG"
               rm -f $PIDFILE
               exit 1
           fi        
        fi
        ;;  
    stop)  
        status  
        RETVAL=$?  
        if [ $RETVAL -eq 0 ]; then  
            echo "-----Shutting down $PROG"  
            kill -9 `cat $PIDFILE`  
            RETVAL=$?  
            if [ $RETVAL -eq 0 ]; then  
                rm -f $PIDFILE  
            else  
                echo "-----Failed to stopping $PROG"  
            fi  
        fi  
        ;;  
    status)  
        status  
        RETVAL=$?  
        if [ $RETVAL -eq 0 ]; then  
            PID=$(cat $PIDFILE)  
            echo "-----$PROG is running ($PID)"  
        else  
            echo "-----$PROG is not running"  
        fi  
        ;;  
    restart)  
        $0 stop  
        $0 start  
        ;;  
    *)  
        echo "Usage: $0 {start|stop|restart|status}"  
        ;;  
esac  
 

No.2 配合jenkins 自动部署脚本

#!/bin/bash

## jenkins 自动部署脚本   jekins 项目 Post Steps设置 启动该脚本,配置如下:
#  BUILD_ID=DONTKILLME
#  bash auto_deploy.sh

SERVICE_NAME=服务名称
JARPATH=jenkins打包后的jar包地址
echo "service name:$SERVICE_NAME"
SERVICE_HOME=服务跟路径/$SERVICE_NAME
JARFILE=$SERVICE_HOME/$SERVICE_NAME.jar
BOOTSTRAP_FILE=$SERVICE_HOME/bootstrap.sh

echo "=====service name: $SERVICE_NAME"
echo "=====service home: $SERVICE_HOME"
echo "=====service resouce jar path: $JARPATH"
echo "=====service bootstrap file: $BOOTSTRAP_FILE"
echo "=====service jar: $JARFILE"

##停止原来的服务
echo "-----Stop service"
bash $BOOTSTRAP_FILE stop

echo "-----Delete source jar file path: $JARFILE"
rm -rf JARFILE

echo "-----Copy $JARPATH to $SERVICE_HOME"
cp $JARPATH $SERVICE_HOME 
COPYRULST=$?
if [ $COPYRULST -eq 0 ]; 
then
    echo "-----Copy success,wait start service....."
    bash $BOOTSTRAP_FILE start
    RETVAL=$?
    if [ $RETVAL -eq 0 ];
    then
       echo "-----$SERVICE_NAME started!"
    else
       echo "-----$SERVICE_NAME start failed!"
    fi
else
    echo "-----Not exist $SERVICE_NAME jar"
    exit 1
fi


 

No.3 jenins自动远程部署脚本

#!/bin/bash

## jenkins 自动部远程署脚本,需要配置两个服务器之间免密登录
## 免登陆配置参考:https://blog.csdn.net/u011186019/article/details/51737760?utm_source=blogxgwz4
##jekins 项目 Post Steps设置 启动该脚本,配置如下:
#BUILD_ID=DONTKILLME   -- 表示Jenkins执行完后不杀死该进程,否则会再jenkins执行完后杀死启动的进程
#bash 远程脚本

SERVICE_NAME=服务名称
REMOTE_SERVICES_HOME=服务器HOME
REMOTE_SERVICE_IP=远程服务器IP
REMOTE_SERVICE_HOME=$REMOTE_SERVICES_HOME/$SERVICE_NAME
REMOTE_SERVICE_JAR=$REMOTE_SERVICE_HOME/$SERVICE_NAME.jar
REMOTE_SERVICE_BOOTSTRAP=$REMOTE_SERVICE_HOME/bootstrap.sh

LOCAL_JAR_PATH=jenkins打包后的路径


echo "=============Service name: $SERVICE_NAME"
echo "=============Remote services home: $REMOTE_SERVICES_HOME"
echo "=============Remote server ip: $REMOTE_SERVICE_IP"
echo "=============Remote service home: $REMOTE_SERVICE_HOME"
echo "=============Remote service jar: $REMOTE_SERVICE_JAR"
echo "=============Remote service bootstrap file: $REMOTE_SERVICE_BOOTSTRAP"

echo "-----Stop and Delete remote service: $SERVICE_NAME"
ssh -T root@$REMOTE_SERVICE_IP << remotessh
sh $REMOTE_SERVICE_BOOTSTRAP stop
rm -rf $REMOTE_SERVICE_JAR
exit
remotessh

echo "-----Scp $LOCAL_JAR_PATH to $REMOTE_SERVICE_HOME"
scp $LOCAL_JAR_PATH root@$REMOTE_SERVICE_IP:$REMOTE_SERVICE_HOME 

echo "-----Start remote service"
ssh -T root@$REMOTE_SERVICE_IP << remotessh
sh $REMOTE_SERVICE_BOOTSTRAP start
exit
remotessh
 

Git传送门:https://github.com/Xlinlin/spring-cloud-demo/tree/master/SpringCloud-Common/script

猜你喜欢

转载自blog.csdn.net/xiaoll880214/article/details/83623934