#!/bin/bash . ~/.bash_profile #出现异常则退出 set -e #获取输入的GIT_BRANCH GIT_BRANCH="$1" #验证GIT_BRANCH if [ ! ${GIT_BRANCH} ]; then echo "fail: please input git branch name" exit 2 fi #定义常量 GIT_URL=git@gitlab.taover.com:taov-erp/8zyun-data-analysis.git GIT_PROJECT_NAME=8zyun-data-analysis MAIN_DIR=$(cd `dirname $0`; pwd) WEBAPP_DIR_NAME=webapp WEBAPP_BAK_DIR_NAME=webapp-bak LOG_DIR_NAME=log cd ${MAIN_DIR} #克隆项目 if [ ! -d "${MAIN_DIR}/${GIT_PROJECT_NAME}" ]; then cd ${MAIN_DIR} git clone ${GIT_URL} echo "git clone success" fi #创建基础目录 if [ ! -d "${MAIN_DIR}/${WEBAPP_DIR_NAME}" ]; then mkdir ${MAIN_DIR}/${WEBAPP_DIR_NAME} echo "mkdir webapp success" fi if [ ! -d "${MAIN_DIR}/${WEBAPP_BAK_DIR_NAME}" ]; then mkdir ${MAIN_DIR}/${WEBAPP_BAK_DIR_NAME} echo "mkdir webapp bak success" fi if [ ! -d "${MAIN_DIR}/${LOG_DIR_NAME}" ]; then mkdir ${MAIN_DIR}/${LOG_DIR_NAME} echo "mkdir log success" fi #备份上一JAR cp -rf ${MAIN_DIR}/${WEBAPP_DIR_NAME}/ ${MAIN_DIR}/${WEBAPP_BAK_DIR_NAME}/ echo "bak webapp dir success" #备份日志文件 bakLogFilePreffix=`date '+%Y%m%d_%H%M'` if [ -f ${MAIN_DIR}/${LOG_DIR_NAME}/log_std.out ]; then cp -f ${MAIN_DIR}/${LOG_DIR_NAME}/log_std.out ${MAIN_DIR}/${LOG_DIR_NAME}/${bakLogFilePreffix}_log_std.out fi if [ -f ${MAIN_DIR}/${LOG_DIR_NAME}/log_error.out ]; then cp -f ${MAIN_DIR}/${LOG_DIR_NAME}/log_error.out ${MAIN_DIR}/${LOG_DIR_NAME}/${bakLogFilePreffix}_log_error.out fi #拉取线上production代码并编译发布 tagNamePreffix=`date '+%Y%m%d'` cd ${MAIN_DIR}/${GIT_PROJECT_NAME}/ git checkout ${GIT_BRANCH} git pull origin ${GIT_BRANCH} headCommit=`git rev-parse HEAD` git tag -a v.${GIT_BRANCH}.${tagNamePreffix}.${headCommit} -m "COMMIT ID : ${headCommit}" || echo "git tag fail" git push origin v.${GIT_BRANCH}.${tagNamePreffix}.${headCommit} gradle build echo "pull ${GIT_BRANCH} and build success" #终止线程并移除文件 pid=`ps -ef | grep "$GIT_PROJECT_NAME".jar | grep -v grep | awk '{print $2}'` if [ -n "$pid" ] then kill $pid fi rm -rf ${MAIN_DIR}/${WEBAPP_DIR_NAME}/* echo "end process and rm success" #移动TAR文件、解压、启动 cd ${MAIN_DIR}/${WEBAPP_DIR_NAME}/ mv ${MAIN_DIR}/${GIT_PROJECT_NAME}/build/distributions/${GIT_PROJECT_NAME}-boot.tar ${MAIN_DIR}/${WEBAPP_DIR_NAME}/ tar -xvf ${GIT_PROJECT_NAME}-boot.tar nohup java -Xmx8192m -jar ${GIT_PROJECT_NAME}-boot/lib/${GIT_PROJECT_NAME}.jar --spring.profiles.active=${GIT_BRANCH} 2>${MAIN_DIR}/${LOG_DIR_NAME}/log_error.out 1>${MAIN_DIR}/${LOG_DIR_NAME}/log_std.out & echo "start up success"