2018-02-07 17:14:35 +08:00
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
#################################################################################
|
|
|
|
|
# JAVA 应用发布脚本
|
2019-05-07 14:29:16 +08:00
|
|
|
|
# @author: Zhang Peng
|
2018-02-07 17:14:35 +08:00
|
|
|
|
#################################################################################
|
|
|
|
|
|
|
|
|
|
# 检查脚本参数,如必要参数未传入,退出脚本。
|
|
|
|
|
checkInput() {
|
2019-10-29 18:22:19 +08:00
|
|
|
|
if [ "${branch}" == "" ] || [ "${profile}" == "" ]; then
|
|
|
|
|
echo "请输入脚本参数:branch profile"
|
|
|
|
|
echo " branch: git分支(必填)。如 feature/1.1.16, master"
|
|
|
|
|
echo " profile: 运行环境(必填)。可选值:development | test"
|
|
|
|
|
echo "例:./java-app-release.sh feature/1.1.16 test"
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
2018-02-07 17:14:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 检查文件是否存在,不存在则退出脚本
|
|
|
|
|
checkFileExist() {
|
2019-10-29 18:22:19 +08:00
|
|
|
|
if [ ! -f "$1" ]
|
|
|
|
|
then
|
|
|
|
|
echo "关键文件 $1 找不到,脚本执行结束"
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
2018-02-07 17:14:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 检查文件夹是否存在,不存在则创建
|
|
|
|
|
createFolderIfNotExist() {
|
2019-10-29 18:22:19 +08:00
|
|
|
|
if [ ! -d "$1" ]; then
|
|
|
|
|
mkdir -p "$1"
|
|
|
|
|
fi
|
2018-02-07 17:14:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# 记录发布的版本信息
|
|
|
|
|
saveVersionInfo() {
|
2019-10-29 18:22:19 +08:00
|
|
|
|
rm -rf ${VERSION_LOG_FILE}
|
|
|
|
|
touch ${VERSION_LOG_FILE}
|
|
|
|
|
chmod 777 ${VERSION_LOG_FILE}
|
|
|
|
|
|
|
|
|
|
echo -e "\n=================== Version Info ===================" >> ${VERSION_LOG_FILE}
|
|
|
|
|
echo "Branch is: ${branch}" >> ${VERSION_LOG_FILE}
|
|
|
|
|
echo "Profile is: ${profile}" >> ${VERSION_LOG_FILE}
|
|
|
|
|
echo "CommitID is : $(git log --pretty=oneline -1)" >> ${VERSION_LOG_FILE}
|
2018-02-07 17:14:35 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
######################################## MAIN ########################################
|
|
|
|
|
# 设置环境变量
|
|
|
|
|
export LANG="zh_CN.UTF-8"
|
|
|
|
|
|
|
|
|
|
# 设置全局常量
|
|
|
|
|
LOG_DIR=/home/zp/log/
|
2019-10-10 08:56:31 +08:00
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "$0")";
|
|
|
|
|
pwd)
|
2018-02-07 17:14:35 +08:00
|
|
|
|
SOURCE_DIR=/home/zp/source/
|
|
|
|
|
APP_NAME=XXX
|
|
|
|
|
RESOURCES_DIR=/home/zp/source/${APP_NAME}/src/main/resources
|
|
|
|
|
UPDATE_CODE_SCRIPT_FILE=${SCRIPT_DIR}/update-code.sh
|
|
|
|
|
MAVEN_LOG_FILE=${LOG_DIR}/${APP_NAME}-maven.log
|
|
|
|
|
VERSION_LOG_FILE=${LOG_DIR/${APP_NAME}-version.log
|
|
|
|
|
|
|
|
|
|
# 0. 获取传入参数并检查
|
|
|
|
|
branch=`echo $1`
|
|
|
|
|
profile=`echo $2`
|
|
|
|
|
checkInput
|
|
|
|
|
checkFileExist ${UPDATE_CODE_SCRIPT_FILE}
|
|
|
|
|
createFolderIfNotExist ${LOG_DIR}
|
|
|
|
|
createFolderIfNotExist ${SOURCE_DIR}
|
|
|
|
|
|
|
|
|
|
echo ">>>>>>>>>>>>>> 1. 停止应用"
|
|
|
|
|
${SCRIPT_DIR}/java-app-run.sh ${profile} stop
|
|
|
|
|
|
|
|
|
|
echo ">>>>>>>>>>>>>> 2. 更新代码"
|
|
|
|
|
${UPDATE_CODE_SCRIPT_FILE} ${APP_NAME} ${branch} ${SOURCE_DIR}
|
|
|
|
|
execode=$?
|
|
|
|
|
if [ "${execode}" == "0" ]; then
|
2019-10-29 18:22:19 +08:00
|
|
|
|
echo "更新代码成功"
|
2018-02-07 17:14:35 +08:00
|
|
|
|
else
|
2019-10-29 18:22:19 +08:00
|
|
|
|
echo "更新代码失败"
|
|
|
|
|
exit 1
|
2018-02-07 17:14:35 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo ">>>>>>>>>>>>>> 3. 替换配置"
|
|
|
|
|
# 有则加,无则过
|
|
|
|
|
|
|
|
|
|
echo ">>>>>>>>>>>>>> 4. 构建编译"
|
|
|
|
|
cd ${SOURCE_DIR}/ck-lion
|
|
|
|
|
mvn clean package -e -Dmaven.test.skip=true | tee ${MAVEN_LOG_FILE}
|
|
|
|
|
eexecode=$?
|
|
|
|
|
if [ "${execode}" == "0" ]; then
|
2019-10-29 18:22:19 +08:00
|
|
|
|
echo "构建编译成功"
|
|
|
|
|
echo "编译详情见:${MAVEN_LOG_FILE}"
|
2018-02-07 17:14:35 +08:00
|
|
|
|
else
|
2019-10-29 18:22:19 +08:00
|
|
|
|
echo "构建编译失败"
|
|
|
|
|
echo "编译详情见:${MAVEN_LOG_FILE}"
|
|
|
|
|
exit 1
|
2018-02-07 17:14:35 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo ">>>>>>>>>>>>>> 5. 启动应用"
|
|
|
|
|
# 手动释放内存
|
|
|
|
|
echo 3 > /proc/sys/vm/drop_caches
|
|
|
|
|
${SCRIPT_DIR}/java-app-run.sh ${profile} start
|
|
|
|
|
execode=$?
|
|
|
|
|
if [ "${execode}" == "0" ]; then
|
2019-10-29 18:22:19 +08:00
|
|
|
|
echo "启动应用成功"
|
2018-02-07 17:14:35 +08:00
|
|
|
|
else
|
2019-10-29 18:22:19 +08:00
|
|
|
|
echo "启动应用失败"
|
|
|
|
|
exit 1
|
2018-02-07 17:14:35 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo ">>>>>>>>>>>>>> 6. 记录发布的版本信息"
|
|
|
|
|
saveVersionInfo
|
|
|
|
|
|
|
|
|
|
echo ">>>>>>>>>>>>>> 发布应用结束"
|