实例解析服务部署脚本build.sh

在我们的现实生活中,我们经常面临着迁移服务的工作,对于这部分,我也是属于一个小白的一样的人员
所以开始写下这篇文章,来记录一下学习过程,好的,我们开始今天的课程,如何看懂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,

mvn常见命令

创建dir release
cp -r 拷贝目录下的所有文件
拷贝下这个服务下的所有文件

发布了99 篇原创文章 · 获赞 72 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/wj123446/article/details/80589421