deployment.txt
2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/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"