yoqw/cas/deploy
2023-10-09 23:34:40 +08:00

87 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# get real path of softlink
get_real_path() {
local f="$1"
while [ -h "$f" ]; do
ls=`ls -ld "$f"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
f="$link"
else
f=`dirname "$f"`/"$link"
fi
done
echo "$f"
}
prg_path=$(get_real_path "$0")
echo "Script Path [$prg_path]"
pushd $(dirname "$prg_path") > /dev/null
PROJECT_HOME=$(pwd)
echo "Project Home [$PROJECT_HOME]"
if [ "$1" = 'test' ]; then
SERVER=xiandou@tj-daily
elif [ "$1" == 'prod' ]; then
echo 'deploy dw'
SERVER=crm@dw-crm
else
echo 'Profile required.'
exit 1
fi
if [ "$1" != 'nb' ]; then
mvn -T 4C clean package -am -DskipTests
fi
if [ $? -ne 0 ]; then
echo 'Maven build failed.'
exit 1
fi
TARGET_DIR=target
echo "Target dir [$TARGET_DIR]"
JAR=$(find "$TARGET_DIR" -maxdepth 1 -type f -name "*.war" | grep -v "sources.jar$")
if [ -z "$JAR" ]; then
echo "Build target JAR is blank, exit."
exit 1
fi
echo "Target JAR [$JAR] found"
JAR_FILE_NAME="${JAR##*/}"
echo "JAR file name [$JAR_FILE_NAME]"
SERVICE_HOME=/data/program/cas
echo "Service Home [$SERVICE_HOME], Server [$SERVER]"
echo "$SERVER [ -f $SERVICE_HOME/lib/main.jar ] && mv $SERVICE_HOME/lib/main.jar $SERVICE_HOME/lib/main_prev.jar"
ssh "$SERVER" "[ -f $SERVICE_HOME/lib/main.jar ] && mv $SERVICE_HOME/lib/main.jar $SERVICE_HOME/lib/main_prev.jar"
echo "Copy [$JAR] to [$SERVER:$SERVICE_HOME/lib/]"
# Rename jar
mv $JAR $TARGET_DIR/main.jar
TAR_FILE=main.tgz
tar -C $TARGET_DIR -czvf $TARGET_DIR/$TAR_FILE main.jar
DIST_TAR_FILE=$SERVICE_HOME/lib/$TAR_FILE
# Copy file to remote
scp "$TARGET_DIR/$TAR_FILE" "$SERVER:$DIST_TAR_FILE"
ssh "$SERVER" "tar -C $SERVICE_HOME/lib -xzvf $DIST_TAR_FILE && rm -rf $DIST_TAR_FILE"
# Restore jar
mv $TARGET_DIR/main.jar $JAR
# Remove tar
rm -rf $TARGET_DIR/$TAR_FILE
echo "$SERVER $SERVICE_HOME/bin/stop.sh"
ssh "$SERVER" "$SERVICE_HOME/bin/stop.sh"
echo "$SERVER $SERVICE_HOME/bin/start.sh"
ssh "$SERVER" "$SERVICE_HOME/bin/start.sh"
popd > /dev/null