👌 更新脚本代码

pull/11/head
Zhang Peng 2018-02-13 16:20:33 +08:00
parent f2089be3dd
commit 8555698a7a
5 changed files with 203 additions and 115 deletions

View File

@ -0,0 +1,62 @@
#!/usr/bin/env bash
# 打印UI页头信息
function printHeadInfo() {
cat << EOF
***********************************************************************************
* 欢迎使用项目引导式发布脚本。
* 输入任意键进入脚本操作。
***********************************************************************************
EOF
}
# 打印UI页尾信息
function printFootInfo() {
cat << EOF
***********************************************************************************
* 安装过程结束。
* 输入任意键进入脚本操作。
* 如果不想安装其他应用,输入 exit 回车或输入 <CTRL-C> 退出。
***********************************************************************************
EOF
}
# 检查文件是否存在,不存在则退出脚本
function checkFileExist() {
if [ ! -f "$1" ]
then
echo "关键文件 $1 找不到,脚本执行结束"
exit 1
fi
}
# 检查文件夹是否存在,不存在则创建
function createFolderIfNotExist() {
if [ ! -d "$1" ];then
mkdir -p "$1"
fi
}
# 记录发布的版本信息
# 第一个参数为日志所在路径
# 第二个参数为应用名称
# 第三个参数为代码分支
# 第四个参数为运行环境
function saveVersionInfo() {
if [ "$1" == "" ] || [ "$2" == "" ] || [ "$3" == "" ] || [ "$4" == "" ]; then
echo "缺少参数,退出"
exit 1
fi
VERSION_LOG_FILE=$1/$2-version.log
rm -rf ${VERSION_LOG_FILE}
touch ${VERSION_LOG_FILE}
chmod 777 ${VERSION_LOG_FILE}
echo -e "\n=================== $2 ===================" >> ${VERSION_LOG_FILE}
echo "Branch is: $3" >> ${VERSION_LOG_FILE}
echo "Profile is: $4" >> ${VERSION_LOG_FILE}
echo "CommitID is : $(git log --pretty=oneline -1)" >> ${VERSION_LOG_FILE}
}

View File

@ -1,68 +1,76 @@
#!/usr/bin/env bash
#################################################################################
# 前端应用发布脚本
# Author: Zhang Peng
# 环境要求Nvm、Node.js
#################################################################################
# 检查脚本参数,如必要参数未传入,退出脚本。
function checkInput() {
if [ "${branch}" == "" ]; then
echo "请输入脚本参数branch"
echo " branch: git分支必填。如 feature/1.1.16, master"
echo "例:./js-app-release.sh feature/1.1.16"
exit 0
echo " branch: git分支。如 feature/1.1.16, master"
exit 1
fi
}
# 检查文件是否存在,不存在则退出脚本
function checkFileExist() {
if [ ! -f "$1" ]
then
echo "关键文件 $1 找不到,脚本执行结束"
exit 0
# 脚本主方法
function main() {
echo ">>>>>>>>>>>>>> 1. 更新代码"
${SCRIPT_DIR}/update-code.sh ${APP} ${branch} ${SOURCE_DIR}
execode=$?
if [ "${execode}" == "0" ]; then
echo "更新代码成功"
else
echo "更新代码失败"
exit 1
fi
echo ">>>>>>>>>>>>>> 2. 替换配置"
# 有的应用此处可能需要替换配置
echo ">>>>>>>>>>>>>> 3. 构建编译"
cd ${SOURCE_DIR}/${APP}
source "${HOME}/.nvm/nvm.sh"
nvm use 8.9
npm install
if [ "${profile}" == "develop" ] || [ "${profile}" == "test" ]; then
npm start
elif [ "${profile}" == "preview" ] || [ "${profile}" == "product" ]; then
npm run build
fi
execode=$?
if [ "${execode}" == "0" ]; then
echo "构建编译成功"
else
echo "构建编译失败"
exit 1
fi
echo ">>>>>>>>>>>>>> 4. 记录发布的版本信息"
saveVersionInfo ${LOG_DIR} ${APP} ${branch} ${profile}
echo ">>>>>>>>>>>>>> 发布应用结束"
}
# 检查文件夹是否存在,不存在则创建
function createFolderIfNotExist() {
if [ ! -d "$1" ];then
mkdir -p "$1"
fi
}
##############################__MAIN__########################################
######################################## MAIN ########################################
# 设置环境变量
export LANG="zh_CN.UTF-8"
# 设置全局常量
APP=blog
LOG_DIR=/home/zp/log
SOURCE_DIR=/home/zp/source
SCRIPT_DIR=$(cd "$(dirname "$0")"; pwd)
SOURCE_DIR=/home/zp/source/
APP_NAME=XXX
UPDATE_CODE_SCRIPT_FILE=${SCRIPT_DIR}/update-code.sh
# 0. 获取传入参数并检查
# 装载函数库
. ${SCRIPT_DIR}/helper.sh
# 获取传入参数并检查
branch=`echo $1`
profile=`echo $2`
checkInput
checkFileExist ${UPDATE_CODE_SCRIPT_FILE}
checkFileExist ${SCRIPT_DIR}/update-code.sh
createFolderIfNotExist ${SOURCE_DIR}
echo ">>>>>>>>>>>>>> 1. 停止应用"
# 有则加,无则过
echo ">>>>>>>>>>>>>> 2. 更新代码"
${UPDATE_CODE_SCRIPT_FILE} ${APP_NAME} ${branch} ${SOURCE_DIR}
execode=$?
if [ "${execode}" == "0" ]; then
echo "更新代码成功"
else
echo "更新代码失败"
exit 1
fi
echo ">>>>>>>>>>>>>> 3. 替换配置"
# 有则加,无则过
echo ">>>>>>>>>>>>>> 4. 构建启动"
cd ${SOURCE_DIR}/${APP_NAME}
source "${HOME}/.nvm/nvm.sh"
nvm use 8.9
npm install
npm run build
# 运行主方法
main

View File

@ -5,28 +5,13 @@
# Author: Zhang Peng
###################################################################################
# 检查文件是否存在,不存在则退出脚本
function checkFileExist() {
if [ ! -f "$1" ]
then
echo "关键文件 $1 找不到,脚本执行结束"
exit 0
fi
}
# 检查文件夹是否存在,不存在则创建
function createFolderIfNotExist() {
if [ ! -d "$1" ];then
mkdir -p "$1"
fi
}
# 选择应用
function chooseAppName() {
cat << EOF
请选择应用名(数字或关键字均可)。
可选值如下:
[0] all (所有应用)
[1] APP1
[1] js-app
[2] APP2
EOF
@ -37,18 +22,48 @@ do
app=all
break ;;
1 )
app=APP1
app=js-app
break ;;
2 )
app=APP2
break ;;
all | APP1 | APP2 )
all | js-app | APP2 )
break ;;
* ) echo "无法识别 ${app}" ;;
esac
done
}
# 选择操作
function chooseOper() {
cat << EOF
请选择想要执行的操作(数字或关键字均可)。
可选值如下:
[1] start
[2] restart
[3] stop
EOF
while read oper
do
case ${oper} in
1 )
oper=start
break ;;
2 )
oper=restart
break ;;
3 )
oper=stop
break ;;
start | restart | stop )
break ;;
* ) echo "无法识别 ${oper}" ;;
esac
done
}
# 选择代码分支
function chooseBranch() {
cat << EOF
请输入 git 分支。
@ -64,6 +79,7 @@ else
fi
}
# 选择运行环境
function chooseProfile() {
cat << EOF
请选择运行环境(数字或关键字均可)。
@ -96,15 +112,14 @@ do
done
}
function inputParams() {
chooseAppName
chooseBranch
chooseProfile
# 确认选择
function confirmChoice() {
cat << EOF
===================================================
请确认您的选择Y/N
app: ${app}
oper: ${oper}
branch: ${branch}
profile: ${profile}
===================================================
@ -125,43 +140,51 @@ EOF
done
}
function printHeadInfo() {
cat << EOF
***********************************************************************************
* 欢迎使用项目引导式发布脚本。
* 输入任意键进入脚本操作。
***********************************************************************************
EOF
}
function printFootInfo() {
cat << EOF
***********************************************************************************
* 安装过程结束。
* 输入任意键进入脚本操作。
* 如果不想安装其他应用,输入 exit 回车或输入 <CTRL-C> 退出。
***********************************************************************************
EOF
}
function main() {
# 引导式发布应用
function releaseApp() {
# 输入执行参数
app=""
branch=""
profile=""
inputParams
if [ "${app}" == "all" ]; then
checkFileExist ${SCRIPT_DIR}/java-app-release.sh
checkFileExist ${SCRIPT_DIR}/js-app-release.sh
${SCRIPT_DIR}/io-alch-release.sh ${branch} ${profile}
${SCRIPT_DIR}/ck-alch-release.sh ${branch} ${profile}
chooseAppName
chooseOper
if [ "${oper}" == "stop" ]; then
confirmChoice
if [ "${app}" == "all" ]; then
${SCRIPT_DIR}/${app}-run.sh stop ${profile}
else
${SCRIPT_DIR}/${app}-run.sh stop ${profile}
fi
else
checkFileExist ${SCRIPT_DIR}/${app}-release.sh
${SCRIPT_DIR}/${app}-release.sh ${branch} ${profile}
chooseBranch
chooseProfile
confirmChoice
if [ "${app}" == "all" ]; then
${SCRIPT_DIR}/js-app-release.sh ${branch} ${profile}
else
${SCRIPT_DIR}/${app}-release.sh ${branch} ${profile}
fi
fi
}
# 脚本主方法
function main() {
printHeadInfo
while read sign
do
case ${sign} in
exit)
echo "主动退出脚本"
exit 0 ;;
* )
releaseApp ;;
esac
# 装载函数库
printFootInfo
done
}
######################################## MAIN ########################################
@ -171,18 +194,13 @@ export LANG="zh_CN.UTF-8"
# 设置全局常量
SCRIPT_DIR=$(cd "$(dirname "$0")"; pwd)
SOURCE_DIR=/home/zp/source/
# 如果源码存放目录不存在则创建
# 装载函数库
. ${SCRIPT_DIR}/helper.sh
# 检查必要文件或文件夹是否存在
checkFileExist ${SCRIPT_DIR}/helper.sh
createFolderIfNotExist ${SOURCE_DIR}
printHeadInfo
while read sign
do
case ${sign} in
exit )
exit 0 ;;
* )
main ;;
esac
printFootInfo
done
# 运行主方法
main

View File

@ -44,7 +44,7 @@
<!-- logger begin -->
<!-- 本项目的日志记录,分级打印 -->
<logger name="cn.xyz" level="TRACE">
<logger name="io.github.zp" level="TRACE">
<appender-ref ref="ELK-TCP"/>
<appender-ref ref="ALL"/>
</logger>

View File

@ -8,4 +8,4 @@ git clone https://github.com/creationix/nvm.git ~/.nvm && cd ~/.nvm
source ~/.nvm/nvm.sh
# 使用 nvm 安装 Node 指定版本
nvm install 0.10.48
nvm install 8.9.4