自动下载源码_并编译_打包_部署_重启服务的Shell脚本

来源:互联网 发布:淘宝网店注册流程 编辑:程序博客网 时间:2024/05/14 18:53
完整版见https://jadyer.github.io/2015/06/03/linux-shell-deploy/




#!/bin/shAPP_NAME=engineAPP_WARS=JadyerEngine-web/targetAPP_PATH=/app/tomcat-6.0.43APP_CODE=sourcecodeSVN_URL=https://svn.sinaapp.com/jadyer/2/repository/JadyerEngineSVN_USER=jadyer@yeah.netSVN_PSWD=玄玉appPID=0getAppPID(){    pidInfo=`ps aux|grep java|grep $APP_PATH|grep -v grep`    if [ -n "$pidInfo" ]; then        appPID=`echo $pidInfo | awk '{print $2}'`    else        appPID=0    fi}downloadAndCompileSourceCode(){    cd $APP_PATH    mkdir $APP_CODE    svn --username $SVN_USER --password $SVN_PSWD checkout $SVN_URL $APP_CODE    cd $APP_CODE    mvn clean package -DskipTests}shutdown(){    getAppPID    echo "[玄玉] ========================================================================================================"    if [ $appPID -ne 0 ]; then        echo -n "[玄玉] Stopping $APP_PATH(PID=$appPID)..."        kill -9 $appPID        if [ $? -eq 0 ]; then            echo "[Success]"            echo "[玄玉] ========================================================================================================"        else            echo "[Failed]"            echo "[玄玉] ========================================================================================================"        fi        getAppPID        if [ $appPID -ne 0 ]; then            shutdown        fi    else        echo "[玄玉] $APP_PATH is not running"        echo "[玄玉] ========================================================================================================"    fi}deploy(){    cd $APP_PATH/webapps/    rm -rf $APP_NAME    rm -rf $APP_NAME.war    cp $APP_PATH/$APP_CODE/$APP_WARS/*.war $APP_NAME.war    cd $APP_PATH/logs/    rm -rf *    cd $APP_PATH    rm -rf $APP_CODE}startup(){    cd $APP_PATH/bin    ./startup.sh    tail -100f ../logs/catalina.out}downloadAndCompileSourceCodeshutdowndeploystartup

上面的脚本在执行的过程中,若Ctrl+C退出后,会导致应用部署失败,故编写了下面这个可在后台执行的脚本

不想用下面这个脚本也可以,只是在执行上面的脚本时直接[nohup ./deploy-engine.sh &]就行了

即便如此,个人仍推荐只用上面的脚本就够了(如果是你自己用的话)!!

#!/bin/shAPP_LOGS=/app/tomcat-6.0.43/logsSHELL_NAME=bin/deploy-engine.shshellPID=0getShellPID(){    pidInfo=`ps aux|grep $SHELL_NAME|grep -v grep`    if [ -n "$pidInfo" ]; then        shellPID=`echo $pidInfo | awk '{print $2}'`    else        shellPID=0    fi}shutdown(){    getShellPID    echo "[玄玉] ========================================================================================================"    if [ $shellPID -ne 0 ]; then        echo -n "[玄玉] Stopping $SHELL_NAME(PID=$shellPID)..."        kill -9 $shellPID        if [ $? -eq 0 ]; then            echo "[Success]"            echo "[玄玉] ========================================================================================================"        else            echo "[Failed]"            echo "[玄玉] ========================================================================================================"        fi        getShellPID        if [ $shellPID -ne 0 ]; then            shutdown        fi    else        echo "[玄玉] $SHELL_NAME is not running"        echo "[玄玉] ========================================================================================================"    fi}#[2>&1]表示把标准错误(stderr)重定向到标准输出(stdout),否则会提示[nohup: redirecting stderr to stdout]startupByNohup(){    cd $APP_LOGS    rm -rf nohup.log    nohup ../$SHELL_NAME > nohup.log 2>&1 &    sleep 1    tail -100f nohup.log}shutdownstartupByNohup
0 0