#!/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" } deploy_server() { local server="$1" local app="$2" local jar="$3" local srv_dir="$4" if [ -z "$srv_dir" ]; then srv_dir="$app" fi echo "Deploy server [$server] app [$app] jar [$jar] port [$port] server dir [$srv_dir]." local target_dir="/data/program/$srv_dir" local target_jar="$target_dir/lib/main.jar" scp $jar $server:"${target_jar}_new" ssh $server "$target_dir/bin/stop.sh; mv $target_jar ${target_jar}_prev; mv ${target_jar}_new $target_jar && $target_dir/bin/start.sh" } prg_path=$(get_real_path "$0") echo "Script path [$prg_path]" # Service Home pushd $(dirname "$prg_path") > /dev/null WORK_DIR=$(pwd) echo "Work dir [$WORK_DIR]" if [ -z "$1" ] && [ -z "$2" ]; then echo 'Usage: ./deploy.sh cms|server test|prod [nb]' exit 1 fi APP=$1 if [ ! -d "$APP" ]; then echo "App [$APP] is not valid maven module." exit 1 fi if [ ! "$3" == "nb" ]; then mvn -T 4C clean package -pl $APP -am -DskipTests fi TARGET_DIR=$APP/target echo "Target dir [$TARGET_DIR]" JAR=$(find "$TARGET_DIR" -maxdepth 1 -type f -name '*.jar' | grep -v 'sources.jar') echo "JAR [$JAR] found" if [ "$2" == "test" ]; then echo "Deploy test." ADDR='xiandou@tj-daily' if [ "$1" == "server" ]; then deploy_server $ADDR $APP $JAR fs-server else deploy_server $ADDR $APP $JAR fi elif [ "$2" == "prod" ]; then echo "Deploy prod." if [ "$1" == "server" ]; then ADDR='cc@dw-cc' deploy_server $ADDR $APP $JAR fs-server else ADDR='crm@dw-crm' deploy_server $ADDR $APP $JAR fi if [ "$1" == "tj-cms" ]; then ADDR='crm@dw-crm' deploy_server $ADDR $APP $JAR ADDR='site@dw-site' deploy_server $ADDR $APP $JAR fi elif [ "$2" == "wx" ]; then echo "Deploy wx." if [ "$1" == "server" ]; then ADDR='wx-cc' deploy_server $ADDR $APP $JAR fs-server fi if [ "$1" == "cms" ]; then ADDR='wx-cc' deploy_server $ADDR $APP $JAR fi fi popd > /dev/null