所以开始写下这篇文章,来记录一下学习过程,好的,我们开始今天的课程,如何看懂build.sh这个部署
服务的脚本
1.以下面这个脚本为例,我们来看下这个部署的脚本的内容
#!/bin/bash
#初始变量设定
set -x
set -e
JOB_ENV=${1}
CLUSTER=`python analyze_var.py ${JOB_ENV} cluster`
SERVICE=`python analyze_var.py ${JOB_ENV} service`
export SCRIPT_DIR=`cd $(dirname $0); pwd -P`
export JAVA_HOME=/opt/soft/jdk1.8.0_25
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/rt.jar
deploy_module(){
cd ${SCRIPT_DIR}
case ${SERVICE} in
#确保构建的模块是可执行的
#"admin-web" | "exchange-service" | "traffic-control-service")
"admin-web" | "adx-service" | "config-service")
mvn -U clean package -pl ${SERVICE} -am -P${CLUSTER} -Dmaven.test.skip=true
mkdir -p release/
cp -r ${SERVICE}/target/${SERVICE}.jar \
${SERVICE}/deploy \
${SERVICE}/deploy/* \
release
;;
*)
exit
;;
esac
}
#应用主体
main(){
deploy_module
}
main
1.#!/bin/bash
2.#注释,表明这个符号所在的一行都是注释
3.set -x
4.set -e
5.JOB_EVN=${1}
JOB_ENV这个变量的值被赋值于第一个参数
6.CLUSTER=`python analyze_var.py ${JOB_ENV} cluster`
7.SERVICE=`python analyze_var.py ${JOB_ENV} service`
8.export SCRIPT_DIR=`cd $(dirname $0); pwd -P
linux export命令用于设置或显示环境变量,export可新增,修改或删除环境变量
$(dirname $0),这个命令在脚本文件中才有作用,他返回这个脚本文件的放置的目录
来定位所要运行程序的相对位置,他返回的是当前路径"."。
则这句话就是说设置SCRIPT_DIR的环境变量的值为当前的这个项目的路径
9.export JAVA_HOME=/opt/soft/jdk1.8.0_25
JAVA_HOME的环境变量设置为/opt/soft/jdk1.8.0_25
10.export PATH=${JAVA_HOME}/bin:$PATH
将path的环境变量设置为之前的path,目前在添加JAVA_HOME/bin到path的这个路径
11.export CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/rt.jar
将CLASSPATH的环境变量设置为当前路径在加上另外两个jar
12.cd ${SCRIPT_DIR}
到SCRIPT_DIR所在的目录里面
13.
case ${SERVICE} in
#确保构建的模块是可执行的
#"admin-web" | "exchange-service" | "traffic-control-service")
"admin-web" | "adx-service" | "config-service")
mvn -U clean package -pl ${SERVICE} -am -P${CLUSTER} -Dmaven.test.skip=true
mkdir -p release/
cp -r ${SERVICE}/target/${SERVICE}.jar \
${SERVICE}/deploy \
${SERVICE}/deploy/* \
release
;;
*)
exit
;;
esac
这个项目中有三个model,admin-web, adx-service,traffic-control-service
${SERVICE}在这三个项目中"admin-web","adx-service","traffic-control-service"
循环,然后对于每一个model来说,
maven打包,并且激活-P${CLUSTER}环境,忽略测试 -pl,只依赖与这个model,
创建dir release
cp -r 拷贝目录下的所有文件
拷贝下这个服务下的所有文件