deploy

#!/usr/bin/env bash

# pid file
PID_FILE_NAME="pid_file"

# file to upload
EXECUTABLE_JAR_NAME="dfb_console.jar"
TMP_EXECUTABLE_JAR_NAME=${EXECUTABLE_JAR_NAME}".tmp"
EXECUTABLE_JAR_PATH="./target/${EXECUTABLE_JAR_NAME}"

DEPLOY_SCRIPT="deploy.sh"
START_FUNC_NAME="start"

#env, ssh remote, work dir


# ssh remote
ENV_TEST="test"
SSH_HOST_TEST="[email protected]"
WORK_DIR_TEST="/root/dfb_console/"
PORT_TEST="22"

# log file
declare LOG_FILES
NOHUP_LOG="nohup.out"
LOG_BACKUP_FOLDER="logs/"

# generator tables
function generate() {
cd generator
java -classpath jooq-3.9.1.jar:jooq-meta-3.9.1.jar:jooq-codegen-3.9.1.jar:mysql-connector-java-5.1.41.jar:. org.jooq.util.GenerationTool mysql.xml
}

function cdToWorkDir() {
work_dir=`dirname $0`
cd ${work_dir}
}

# backup logs
function backupLog() {
if [ ! -d "${LOG_BACKUP_FOLDER}" ]; then
mkdir ${LOG_BACKUP_FOLDER}
fi

if [ -f "${NOHUP_LOG}" ]; then
time=`date +%Y%m%d%H%M%S`
cp ${NOHUP_LOG} ${LOG_BACKUP_FOLDER}${NOHUP_LOG}.${time}.log
fi
}

# restart
function restart() {
#JAVA_HOME=/home/douqu/jdk1.8.0_181
#export JAVA_HOME
#PATH=$JAVA_HOME/bin:$PATH
#export PATH
# kill
if [ -f "${PID_FILE_NAME}" ]; then
pid=$(cat ${PID_FILE_NAME})
kill -9 ${pid}
fi

# backup log
backupLog

# run
nohup java -server -Xmx1g -Xms1g -Xmn256m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:ParallelGCThreads=6 -XX:ParallelCMSThreads=6 -XX:-OmitStackTraceInFastThrow -jar ${EXECUTABLE_JAR_NAME} > ${NOHUP_LOG} 2>&1 &
echo $! > ${PID_FILE_NAME}
}

# start
function start() {
#JAVA_HOME=/home/douqu/jdk1.8.0_181
#export JAVA_HOME
#PATH=$JAVA_HOME/bin:$PATH
#export PATH
cdToWorkDir

# kill
if [ -f "${PID_FILE_NAME}" ]; then
pid=$(cat ${PID_FILE_NAME})
kill -9 ${pid}
fi

# backup log
backupLog

rm ${EXECUTABLE_JAR_NAME}
mv ${TMP_EXECUTABLE_JAR_NAME} ${EXECUTABLE_JAR_NAME}

# run
nohup java -server -Xmx1g -Xms1g -Xmn256m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:ParallelGCThreads=6 -XX:ParallelCMSThreads=6 -XX:-OmitStackTraceInFastThrow -jar ${EXECUTABLE_JAR_NAME} > ${NOHUP_LOG} 2>&1 &
echo $! > ${PID_FILE_NAME}
}

function upload() {
# upload jar
# rename to *.jar.bak
scp -P $2 ${EXECUTABLE_JAR_PATH} $1:$3${TMP_EXECUTABLE_JAR_NAME}
ret=$?
if [[ ${ret} -ne 0 ]] ; then
echo 'Failed to scp jar'
return 1
fi

# upload script
scp -P $2 ${DEPLOY_SCRIPT} $1:$3
ret=$?
if [[ ${ret} -ne 0 ]] ; then
echo 'Failed to scp script'
return 1
fi
# if ssh $1 "test ! -e $2${DEPLOY_SCRIPT}"; then
# scp ${DEPLOY_SCRIPT} $1:$2
# fi
}

function deploy() {
#rm -rf /target
# package
echo "*******Start to package*******"
ret=$?
if [[ ${ret} -ne 0 ]] ; then
echo 'Failed to package'
exit ${ret}
fi

if [ "$1" = "${ENV_TEST}" ]; then
mvn clean package -Dmaven.test.skip=true -Ptest
SSH_HOST=${SSH_HOST_TEST}
WORK_DIR=${WORK_DIR_TEST}
PORT=${PORT_TEST}
elif [ "$1" = "${ENV_DEV}" ]; then
mvn clean package -Dmaven.test.skip=true -Pdev
SSH_HOST=${SSH_HOST_DEV}
WORK_DIR=${WORK_DIR_DEV}
PORT=${PORT_DEV}
else
# TODO: local
echo "Unknown env: $1"
exit
fi

# upload jar and deploy.sh
echo "*******Start to upload*******"
upload ${SSH_HOST} ${PORT} ${WORK_DIR}
ret=$?
if [[ ${ret} -ne 0 ]] ; then
echo 'Failed to upload files'
exit ${ret}
fi

# run
echo "*******Start to call remote start function*******"
ssh ${SSH_HOST} -p ${PORT} "bash ${WORK_DIR}${DEPLOY_SCRIPT} ${START_FUNC_NAME}"
mvn clean
echo "*******Done*******"
}

if [ "$1" = "${START_FUNC_NAME}" ]; then
start
elif [ "$1" = "model" ]; then
generate
elif [ "$1" = "restart" ]; then
restart
elif [ "$1" = "${ENV_TEST}" ]; then
deploy $1
else
echo "miss argument!"
fi

猜你喜欢

转载自www.cnblogs.com/niuniuc/p/10435070.html