Skip to content

Commit 2038388

Browse files
committed
✨ 添加构建编译 Java 、Js 项目的脚本模板
1 parent b0a1533 commit 2038388

File tree

8 files changed

+584
-64
lines changed

8 files changed

+584
-64
lines changed

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
node_modules
44

55
# temp folders
6-
build
76
dist
87
_book
98
_jsdoc

codes/build/java-app-boot.sh

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#!/usr/bin/env bash
2+
3+
#################################################################################
4+
# JAVA 应用通用启动脚本
5+
# Author: Zhang Peng
6+
#################################################################################
7+
8+
# 检查脚本参数,如必要参数未传入,退出脚本。
9+
function checkInput() {
10+
if [ "${app}" == "" ] || [ "${oper}" == "" ] || [ "${javaArgs}" == "" ] || [ "${classpathArgs}" == "" ] || [ "${bootstrapClass}" == "" ]; then
11+
echo "请输入脚本参数:app oper javaArgs classpathArgs bootstrapClass"
12+
echo " app: 应用名。"
13+
echo " oper: 运行环境(必填)。可选值:start|stop|restart"
14+
echo " javaArgs: JVM 参数(必填)。"
15+
echo " classpathArgs: classpath参数(必填)。"
16+
echo " bootstrapClass: 启动类(必填)。"
17+
exit 0
18+
fi
19+
}
20+
21+
# 检查文件夹是否存在,不存在则创建
22+
function createFolderIfNotExist() {
23+
if [ ! -d "$1" ];then
24+
mkdir -p "$1"
25+
fi
26+
}
27+
28+
# 检查服务是否已经启动
29+
pids=""
30+
function checkStarted() {
31+
pids=`ps -ef | grep java | grep ${app} | awk '{print $2}'`
32+
if [ -n "${pids}" ]; then
33+
return 0
34+
else
35+
return 1
36+
fi
37+
}
38+
39+
function main() {
40+
case "${oper}" in
41+
start )
42+
echo -n "starting server: "
43+
# 检查服务是否已经启动
44+
if checkStarted ;then
45+
echo "ERROR: server already started!"
46+
echo "PID: ${pids}"
47+
exit 1
48+
fi
49+
50+
args="${javaArgs} -classpath ${classpathArgs} ${bootstrapClass}"
51+
echo -e "statup params:\n ${args}"
52+
53+
#启动服务
54+
touch ${LOG_DIR}/${app}-startup.log
55+
nohup java ${args} > ${LOG_DIR}/${app}-startup.log 2>&1 &
56+
# echo -e "执行参数:\n${args}"
57+
echo -e "\nthe server is started..."
58+
;;
59+
stop )
60+
echo -n "stopping server: "
61+
#dubbo提供优雅停机, 不能使用kill -9
62+
if checkStarted ;then
63+
kill ${pids}
64+
echo -e "\nthe server is stopped..."
65+
else
66+
echo -e "\nno server to be stopped..."
67+
fi
68+
;;
69+
restart )
70+
$0 ${app} stop "${javaArgs}" "${classpathArgs}" "${bootstrapClass}"
71+
sleep 5
72+
$0 ${app} start "${javaArgs}" "${classpathArgs}" "${bootstrapClass}"
73+
;;
74+
* )
75+
echo "Invalid oper: ${oper}."
76+
exit 1
77+
esac
78+
79+
exit 0
80+
}
81+
82+
######################################## MAIN ########################################
83+
# 设置环境变量
84+
export LANG="zh_CN.UTF-8"
85+
86+
# 获取输入参数
87+
app=`echo $1`
88+
oper=`echo $2`
89+
javaArgs=`echo $3`
90+
classpathArgs=`echo $4`
91+
bootstrapClass=`echo $5`
92+
vars=$*
93+
checkInput
94+
95+
# 设置全局常量
96+
LOG_DIR=/home/zp/log
97+
createFolderIfNotExist ${LOG_DIR}
98+
99+
# 执行 main 方法
100+
main

codes/build/java-app-release.sh

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#!/usr/bin/env bash
2+
3+
#################################################################################
4+
# JAVA 应用发布脚本
5+
# Author: Zhang Peng
6+
#################################################################################
7+
8+
# 检查脚本参数,如必要参数未传入,退出脚本。
9+
checkInput() {
10+
if [ "${branch}" == "" ] || [ "${profile}" == "" ]; then
11+
echo "请输入脚本参数:branch profile"
12+
echo " branch: git分支(必填)。如 feature/1.1.16, master"
13+
echo " profile: 运行环境(必填)。可选值:development | test"
14+
echo "例:./java-app-release.sh feature/1.1.16 test"
15+
exit 0
16+
fi
17+
}
18+
19+
# 检查文件是否存在,不存在则退出脚本
20+
checkFileExist() {
21+
if [ ! -f "$1" ]
22+
then
23+
echo "关键文件 $1 找不到,脚本执行结束"
24+
exit 0
25+
fi
26+
}
27+
28+
# 检查文件夹是否存在,不存在则创建
29+
createFolderIfNotExist() {
30+
if [ ! -d "$1" ];then
31+
mkdir -p "$1"
32+
fi
33+
}
34+
35+
# 记录发布的版本信息
36+
saveVersionInfo() {
37+
rm -rf ${VERSION_LOG_FILE}
38+
touch ${VERSION_LOG_FILE}
39+
chmod 777 ${VERSION_LOG_FILE}
40+
41+
echo -e "\n=================== Version Info ===================" >> ${VERSION_LOG_FILE}
42+
echo "Branch is: ${branch}" >> ${VERSION_LOG_FILE}
43+
echo "Profile is: ${profile}" >> ${VERSION_LOG_FILE}
44+
echo "CommitID is : $(git log --pretty=oneline -1)" >> ${VERSION_LOG_FILE}
45+
}
46+
47+
######################################## MAIN ########################################
48+
# 设置环境变量
49+
export LANG="zh_CN.UTF-8"
50+
51+
# 设置全局常量
52+
LOG_DIR=/home/zp/log/
53+
SCRIPT_DIR=$(cd "$(dirname "$0")"; pwd)
54+
SOURCE_DIR=/home/zp/source/
55+
APP_NAME=XXX
56+
RESOURCES_DIR=/home/zp/source/${APP_NAME}/src/main/resources
57+
UPDATE_CODE_SCRIPT_FILE=${SCRIPT_DIR}/update-code.sh
58+
MAVEN_LOG_FILE=${LOG_DIR}/${APP_NAME}-maven.log
59+
VERSION_LOG_FILE=${LOG_DIR/${APP_NAME}-version.log
60+
61+
# 0. 获取传入参数并检查
62+
branch=`echo $1`
63+
profile=`echo $2`
64+
checkInput
65+
checkFileExist ${UPDATE_CODE_SCRIPT_FILE}
66+
createFolderIfNotExist ${LOG_DIR}
67+
createFolderIfNotExist ${SOURCE_DIR}
68+
69+
echo ">>>>>>>>>>>>>> 1. 停止应用"
70+
${SCRIPT_DIR}/java-app-run.sh ${profile} stop
71+
72+
echo ">>>>>>>>>>>>>> 2. 更新代码"
73+
${UPDATE_CODE_SCRIPT_FILE} ${APP_NAME} ${branch} ${SOURCE_DIR}
74+
execode=$?
75+
if [ "${execode}" == "0" ]; then
76+
echo "更新代码成功"
77+
else
78+
echo "更新代码失败"
79+
exit 1
80+
fi
81+
82+
echo ">>>>>>>>>>>>>> 3. 替换配置"
83+
# 有则加,无则过
84+
85+
echo ">>>>>>>>>>>>>> 4. 构建编译"
86+
cd ${SOURCE_DIR}/ck-lion
87+
mvn clean package -e -Dmaven.test.skip=true | tee ${MAVEN_LOG_FILE}
88+
eexecode=$?
89+
if [ "${execode}" == "0" ]; then
90+
echo "构建编译成功"
91+
echo "编译详情见:${MAVEN_LOG_FILE}"
92+
else
93+
echo "构建编译失败"
94+
echo "编译详情见:${MAVEN_LOG_FILE}"
95+
exit 1
96+
fi
97+
98+
echo ">>>>>>>>>>>>>> 5. 启动应用"
99+
# 手动释放内存
100+
echo 3 > /proc/sys/vm/drop_caches
101+
${SCRIPT_DIR}/java-app-run.sh ${profile} start
102+
execode=$?
103+
if [ "${execode}" == "0" ]; then
104+
echo "启动应用成功"
105+
else
106+
echo "启动应用失败"
107+
exit 1
108+
fi
109+
110+
echo ">>>>>>>>>>>>>> 6. 记录发布的版本信息"
111+
saveVersionInfo
112+
113+
echo ">>>>>>>>>>>>>> 发布应用结束"

codes/build/java-app-run.sh

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#!/usr/bin/env bash
2+
3+
#################################################################################
4+
# JAVA 应用运行脚本
5+
# Author: Zhang Peng
6+
#################################################################################
7+
8+
# 检查脚本参数,如必要参数未传入,退出脚本。
9+
function checkInput() {
10+
if [ "${profile}" == "" ] || [ "${oper}" == "" ]; then
11+
echo "请输入脚本参数:profile oper [debug]"
12+
echo " profile: 运行环境(必填)。可选值:development|test"
13+
echo " oper: 运行环境(必填)。可选值:start|stop|restart"
14+
echo " debug: debug启动开关。默认不填为不启动。"
15+
exit 0
16+
fi
17+
}
18+
19+
#检查文件是否存在,不存在则退出脚本
20+
function checkFileExist() {
21+
if [ ! -f "$1" ]
22+
then
23+
echo "关键文件 $1 找不到,脚本执行结束"
24+
exit 0
25+
fi
26+
}
27+
28+
# 封装启动参数,调用启动脚本
29+
function main(){
30+
APP_NAME=ck-lion
31+
32+
# JVM 参数
33+
JAVA_OPTS=" -Djava.awt.headless=true -Dfile.encoding=UTF8 -Djava.net.preferIPv4Stack=true -Ddubbo.shutdown.hook=true -Dspring.profiles.active=${profile} -Djava.security.egd=file:/dev/./urandom -Xms1024m -Xmx1024m -Xss2m "
34+
JAVA_DEBUG_OPTS=""
35+
if [ "$2" == "debug" ]; then
36+
JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=2236,server=y,suspend=n "
37+
shift
38+
fi
39+
javaArgs=" ${JAVA_OPTS} ${JAVA_DEBUG_OPTS} "
40+
41+
# classpath 参数
42+
classpathArgs="${SERVER_ROOT}/WEB-INF/classes:${SERVER_ROOT}/WEB-INF/lib/*"
43+
44+
# 启动类
45+
bootstrapClass="com.alibaba.dubbo.container.Main"
46+
47+
${SCRIPT_DIR}/java-app-boot.sh ${APP_NAME} ${oper} "${javaArgs}" "${classpathArgs}" "${bootstrapClass}"
48+
execode=$?
49+
if [ "${execode}" == "0" ]; then
50+
echo "执行操作成功"
51+
else
52+
echo "执行操作失败"
53+
exit 1
54+
fi
55+
}
56+
57+
######################################## MAIN ########################################
58+
# 设置环境变量
59+
export LANG="zh_CN.UTF-8"
60+
61+
# 设置全局常量
62+
SCRIPT_DIR=$(cd "$(dirname "$0")"; pwd)
63+
SOURCE_DIR=/home/zp/source/
64+
APP_NAME=XXX
65+
SERVER_ROOT=/home/zp/source/${APP_NAME}/target/
66+
67+
# 0. 获取传入参数并检查
68+
profile=$1
69+
oper=$2
70+
debug=$3
71+
checkInput
72+
73+
# 1. 执行操作
74+
main

codes/build/js-app-release.sh

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
#!/usr/bin/env bash
2+
3+
#################################################################################
4+
# 前端应用发布脚本
5+
# Author: Zhang Peng
6+
#################################################################################
7+
8+
# 检查脚本参数,如必要参数未传入,退出脚本。
9+
function checkInput() {
10+
if [ "${branch}" == "" ]; then
11+
echo "请输入脚本参数:branch"
12+
echo " branch: git分支(必填)。如 feature/1.1.16, master"
13+
echo "例:./js-app-release.sh feature/1.1.16"
14+
exit 0
15+
fi
16+
}
17+
18+
# 检查文件是否存在,不存在则退出脚本
19+
function checkFileExist() {
20+
if [ ! -f "$1" ]
21+
then
22+
echo "关键文件 $1 找不到,脚本执行结束"
23+
exit 0
24+
fi
25+
}
26+
27+
# 检查文件夹是否存在,不存在则创建
28+
function createFolderIfNotExist() {
29+
if [ ! -d "$1" ];then
30+
mkdir -p "$1"
31+
fi
32+
}
33+
##############################__MAIN__########################################
34+
# 设置全局常量
35+
SCRIPT_DIR=$(cd "$(dirname "$0")"; pwd)
36+
SOURCE_DIR=/home/zp/source/
37+
APP_NAME=XXX
38+
UPDATE_CODE_SCRIPT_FILE=${SCRIPT_DIR}/update-code.sh
39+
40+
# 0. 获取传入参数并检查
41+
branch=`echo $1`
42+
profile=`echo $2`
43+
checkInput
44+
checkFileExist ${UPDATE_CODE_SCRIPT_FILE}
45+
createFolderIfNotExist ${SOURCE_DIR}
46+
47+
echo ">>>>>>>>>>>>>> 1. 停止应用"
48+
# 有则加,无则过
49+
50+
echo ">>>>>>>>>>>>>> 2. 更新代码"
51+
${UPDATE_CODE_SCRIPT_FILE} ${APP_NAME} ${branch} ${SOURCE_DIR}
52+
execode=$?
53+
if [ "${execode}" == "0" ]; then
54+
echo "更新代码成功"
55+
else
56+
echo "更新代码失败"
57+
exit 1
58+
fi
59+
60+
echo ">>>>>>>>>>>>>> 3. 替换配置"
61+
# 有则加,无则过
62+
63+
echo ">>>>>>>>>>>>>> 4. 构建启动"
64+
cd ${SOURCE_DIR}/${APP_NAME}
65+
source "${HOME}/.nvm/nvm.sh"
66+
nvm use 8.9
67+
npm install
68+
npm run build

0 commit comments

Comments
 (0)