From 8555698a7aac1cb95fcda0648a1008314b97fbd9 Mon Sep 17 00:00:00 2001 From: Zhang Peng Date: Tue, 13 Feb 2018 16:20:33 +0800 Subject: [PATCH] =?UTF-8?q?:ok=5Fhand:=20=20=E6=9B=B4=E6=96=B0=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- codes/build/helper.sh | 62 ++++++++ codes/build/js-app-release.sh | 100 +++++++------ codes/build/{project-release.sh => main.sh} | 152 +++++++++++--------- codes/deploy/tool/elk/config/logback.xml | 2 +- codes/deploy/tool/nodejs/install-nodejs.sh | 2 +- 5 files changed, 203 insertions(+), 115 deletions(-) create mode 100644 codes/build/helper.sh rename codes/build/{project-release.sh => main.sh} (62%) diff --git a/codes/build/helper.sh b/codes/build/helper.sh new file mode 100644 index 0000000..c3e120e --- /dev/null +++ b/codes/build/helper.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# 打印UI页头信息 +function printHeadInfo() { +cat << EOF +*********************************************************************************** +* 欢迎使用项目引导式发布脚本。 +* 输入任意键进入脚本操作。 +*********************************************************************************** +EOF +} + +# 打印UI页尾信息 +function printFootInfo() { +cat << EOF + + +*********************************************************************************** +* 安装过程结束。 +* 输入任意键进入脚本操作。 +* 如果不想安装其他应用,输入 exit 回车或输入 退出。 +*********************************************************************************** +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} +} diff --git a/codes/build/js-app-release.sh b/codes/build/js-app-release.sh index 10f7f7f..ec5aab4 100644 --- a/codes/build/js-app-release.sh +++ b/codes/build/js-app-release.sh @@ -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 diff --git a/codes/build/project-release.sh b/codes/build/main.sh similarity index 62% rename from codes/build/project-release.sh rename to codes/build/main.sh index 7c03520..5db7244 100644 --- a/codes/build/project-release.sh +++ b/codes/build/main.sh @@ -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 回车或输入 退出。 -*********************************************************************************** -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 diff --git a/codes/deploy/tool/elk/config/logback.xml b/codes/deploy/tool/elk/config/logback.xml index 64c96bd..c86d34a 100644 --- a/codes/deploy/tool/elk/config/logback.xml +++ b/codes/deploy/tool/elk/config/logback.xml @@ -44,7 +44,7 @@ - + diff --git a/codes/deploy/tool/nodejs/install-nodejs.sh b/codes/deploy/tool/nodejs/install-nodejs.sh index ac66553..3171494 100644 --- a/codes/deploy/tool/nodejs/install-nodejs.sh +++ b/codes/deploy/tool/nodejs/install-nodejs.sh @@ -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