linux-tutorial/codes/linux/ops/build/main.sh

207 lines
3.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env bash
###################################################################################
# 项目发布脚本模板
# Author: Zhang Peng
###################################################################################
# 选择应用
function chooseAppName() {
cat << EOF
请选择应用名(数字或关键字均可)。
可选值如下:
[0] all (所有应用)
[1] js-app
[2] APP2
EOF
while read app
do
case ${app} in
0 )
app=all
break ;;
1 )
app=js-app
break ;;
2 )
app=APP2
break ;;
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 分支。
develop、master、feature/xxx
EOF
read branch
if [[ "${branch}" =~ ^(feature/)([^ \f\n\r\t\v]+) ]] || [ "${branch}" == "develop" ] || [ "${branch}" == "master" ]; then
echo "输入了 ${branch}"
else
echo "无法识别 ${branch}"
chooseBranch
fi
}
# 选择运行环境
function chooseProfile() {
cat << EOF
请选择运行环境(数字或关键字均可)。
可选值:
[1] develop (开发环境)
[2] test (测试环境)
[3] preview (预发布环境)
[4] product (生产环境)
EOF
while read profile
do
case ${profile} in
1 )
profile=develop
break ;;
2 )
profile=test
break ;;
3 )
profile=preview
break ;;
4 )
profile=product
break ;;
develop | test | preview | product )
break ;;
* ) echo "无法识别 ${profile}" ;;
esac
done
}
# 确认选择
function confirmChoice() {
cat << EOF
===================================================
请确认您的选择Y/N
app: ${app}
oper: ${oper}
branch: ${branch}
profile: ${profile}
===================================================
EOF
while read confirm
do
case ${confirm} in
y | Y )
echo -e "\n\n>>>>>>>>>>>>>> 开始发布应用"
break ;;
n | N )
echo -e "重新输入发布参数\n"
inputParams ;;
* )
echo "无法识别 ${confirm}" ;;
esac
done
}
# 引导式发布应用
function releaseApp() {
# 输入执行参数
app=""
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
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 ########################################
# 设置环境变量
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}
# 运行主方法
main