微服务批量部署脚本

服务清单


服务名JRA包
PCMCclhd-pcmc.jar
VALUE-SETvalue-set.jar
KPIkpi-web.jar
KPI.ENGINEkpi-engine-calc.jar
KPI.ADMINkpi-engine-admin.jar
PMsun-pm-boot.jar
AP.ENGINEsunpm-engine-ap.jar
PD.ENGINEsunpm-engine-pd.jar
SUN-JOBsun-job-admin.jar
PTE前台deploy文件

功能


  1. 整体启动:全部启动—>监控各个服务启动情况—>全部服务启动完成—>展示启动情况
#!/bin/bash
base_dir=`pwd`
server_name_array=("clhd-pcmc" "value-set" "kpi-web" "kpi-engine-calc" "kpi-engine-admin" "sun-pm-boot" "sunpm-engine-ap" "sunpm-engine-pd")
for dir in $(ls ${base_dir}/realease)
do
	if [ -d ${base_dir}/realease/${dir} ]; then
    	flag=0
    	for file in $(ls ${base_dir}/realease/${dir}/target)
    	do
    		server_name=$(basename $file .jar)
    		if echo "${server_name_array[@]}" | grep -w "${server_name}" &>/dev/null; then
            	flag=1
            fi
    	done
    	if [ ${flag} == 1 ]; then
    		sh ${base_dir}/realease/${dir}/bin/startup.sh
    	fi
    fi
done
  1. 整体停止:全部停止—>展示停止情况
#!/bin/bash
base_dir=`pwd`
server_name_array=("clhd-pcmc" "value-set" "kpi-web" "kpi-engine-calc" "kpi-engine-admin" "sun-pm-boot" "sunpm-engine-ap" "sunpm-engine-pd")
for dir in $(ls ${base_dir}/realease)
do
	if [ -d ${base_dir}/realease/${dir} ]; then
    	flag=0
    	for file in $(ls ${base_dir}/realease/${dir}/target)
    	do
    		server_name=$(basename $file .jar)
    		if echo "${server_name_array[@]}" | grep -w "${server_name}" &>/dev/null; then
            	flag=1
            fi
    	done
    	if [ ${flag} == 1 ]; then
    		sh ${base_dir}/realease/${dir}/bin/shutdown.sh
    	fi
    fi
done
```

3. 单服务启动:单服务启动-->展示启动情况

```bash
#!/bin/bash
base_dir=`pwd`
for dir in $(ls ${base_dir}/realease)
do
	if [ -d ${base_dir}/realease/${dir} ]; then
    	flag=0
    	for file in $(ls ${base_dir}/realease/${dir}/target)
    	do
    		server_name=$(basename $file .jar)
    		if [ "${1}" == "${sever_name}" ]; then
            	flag=1
            fi
    	done
    	if [ ${flag} == 1 ]; then
    		sh ${base_dir}/realease/${dir}/bin/startup.sh
    	fi
    fi
done
```

4. 单服务停止:单服务停止-->展示停止情况

```bash
#!/bin/bash
base_dir=`pwd`
for dir in $(ls ${base_dir}/realease)
do
	if [ -d ${base_dir}/realease/${dir} ]; then
    	flag=0
    	for file in $(ls ${base_dir}/realease/${dir}/target)
    	do
    		server_name=$(basename $file .jar)
    		if [ "${1}" == "${sever_name}" ]; then
            	flag=1
            fi
    	done
    	if [ ${flag} == 1 ]; then
    		sh ${base_dir}/realease/${dir}/bin/shutdown.sh
    	fi
    fi
done
```

5. 全量版本更新
   1. 只替换jar包:整体停止-->替换jar包-->整体启动

```bash
#!/bin/bash
sh allshutdown.sh
server_name_array=("clhd-pcmc" "value-set" "kpi-web" "kpi-engine-calc" "kpi-engine-admin" "sun-pm-boot" "sunpm-engine-ap" "sunpm-engine-pd")
declare -A replace_file_path_array
replace_file_server_name_array=()
base_dir=`pwd`
##获取每个服务对应的更新jar包路径
index=1
for dir in $(ls ${base_dir}/develop)
do
	if [ -d $base_dir/develop/$dir ]; then
		flag=0
		for file in $(ls $base_dir/develop/$dir/target)
		do
			server_name=$(basename $file .jar)
			if echo "${server_name_array[@]}" | grep -w "${server_name}" &>/dev/null; then
				flag=1
			fi
		done
		if [ ${flag} == 1 ]; then
			replace_file_path_array[${server_name}]=`pwd`"/"${server_name}".jar"
			replace_file_server_name_array[$index]=${server_name}
			index=$[index+1]
        fi
    fi
done
echo update server: ${replace_file_server_name_array[*]}
##替换jar包
for dir in $(ls ${base_dir}/realease)
do
    if [ -d $dir/realease/$dir ]; then
        flag=0
        for file in $(ls ${base_dir}/realease/${dir}/target)
        do
            server_name=$(basename $file .jar)
            if echo "${server_name_array[@]}" | grep -w "${server_name}" &>/dev/null; then
                flag=1
            fi
        done
        if [ ${flag} == 1 ]; then
            echo copy file ${replace_file_path_array[${server_name}]} to ${base_dir}/realease/${dir}/target
        fi
    fi
done
read -p "Confirm replaced file (Y/N): " confirm
confirm=$(echo $confirm | tr [a-z] [A-Z])
for dir in $(ls ${base_dir}/realease)
do
    if [ -d $dir/realease/$dir ]; then
        flag=0
        for file in $(ls ${base_dir}/realease/${dir}/target)
        do
            server_name=$(basename $file .jar)
            if echo "${server_name_array[@]}" | grep -w "${server_name}" &>/dev/null; then
                flag=1
            fi
        done
        if [[ ${flag} == 1 ]] && [[ "${confirm}" == "Y" ]]; then
        	mv -f ${base_dir}/realease/${dir}/target/${server_name}.jar ${base_dir}/realease/${dir}/target/${server_name}_bak.jar
        	cp ${replace_file_path_array[${server_name}]} ${base_dir}/realease/${dir}/target
            echo copy file ${replace_file_path_array[${server_name}]} to ${base_dir}/realease/${dir}/target
        fi
    fi
done
if [ "${confirm}" == "Y" ]; then
	echo update success
	sh allstartup.sh
fi
```

   2. 替换配置文件+jar包:整体停止-->替换conf文件-->替换jar包-->整体启动

```other

```

6. 单个服务版本更新
   1. 只替换jar包:单服务停止-->替换jar包-->单服务启动

```bash
#!/bin/bash
sh singleshutdown.sh ${1}
replace_file_path_array=()
cd realease
##获取服务对应的更新jar包路径
for dir in $(ls)
do
	if [ -d $dir ]; then
    	cd ${dir}/target
    	flag=0
    	for file in $(ls)
    	do
    		server_name=$(basename $file .jar)
    		if [ "${1}" == "${server_name}" ]; then
            	flag=1
            fi
    	done
    	if [ ${flag} == 1 ]; then
    		replace_file_path_array[${server_name}]=`pwd`"/"${server_name}".jar"
    	fi
    	cd ../../
    fi
done
##替换jar包
cd ../develop
for dir in $(ls)
do
	if [ -d $dir ]; then
    	cd ${dir}/target
    	flag=0
    	for file in $(ls)
    	do
    		server_name=$(basename $file .jar)
    		if ["${1}" == "${server_name}" ]; then
            	flag=1
            fi
    	done
    	if [ ${flag} == 1 ]; then
    		mv -f ${server_name}.jar ${server_name}_bak.jar
    		mv ${replace_file_path_array[${server_name}]} .
    	fi
    	cd ../../
    fi
done
sh singlestartup.sh ${1}
```

   2. 替换配置文件+jar包:单服务停止-->替换conf文件-->替换jar包-->单服务启动

```other

```