成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

llinux實現(xiàn)自動上線服務腳本-創(chuàng)新互聯(lián)

今天小編就為大家?guī)硪黄嘘Pllinux實現(xiàn)自動上線服務腳本的文章。小編覺得挺實用的,為此分享給大家做個參考。一起跟隨小編過來看看吧。寫腳本之前先交代一下整個升級的流程:
llinux實現(xiàn)自動上線服務腳本
上邊的流程大體是這樣,其實整體并不難,復雜的是之前的各種判斷??聪履_本是寫成了兩個腳本文件,上線部署和失敗后的回退腳本,應用啟停的腳本過會再提供。

站在用戶的角度思考問題,與客戶深入溝通,找到岳陽網(wǎng)站設計與岳陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務覆蓋岳陽地區(qū)。
#!/bin/bash
#
# SCRIPTNAME:sdwan_version.sh
# DATE:      2020/03/13
# author:    Mright
# version:   V1.3
# desc:      
# V1.2:增加version.info文件到應用用戶目錄下,保存即將部署的應用版本號以及當前生產上部署的
#      版本號,應用部署完成后將版本號回寫到version.info中
# V1.3:調整version.info內容可記錄不同應用版本號,記錄升級后的版本以及上一個版本號
#
# ******************** DEFINE INPUT BEGIN **********************************
set -o pipefail
\# VERSION:即將部署的版本名
VERSION=$1
\# 即將部署生產版本號
V=$2
V=${V:=$(date +"%Y%m%d")}
\# 版本機上的tar包
VERSIONPACKAGE=$3
# ******************** DEFINE INPUT END **********************************
# ******************** DEFINE ARGS BEGIN *********************************
# 版本信息
APPINFOFILE="${HOME}/version.info"
# 當前應用版本號
CURRENTVERSIONID=$(cat ${APPINFOFILE}|grep "${VERSION}_latest"|awk -F':' '{print $2}')
# 網(wǎng)關應用名
ZUULAPPNAME="example-sdwan-api-gateway-${CURRENTVERSIONID}.jar"
# SITE應用名
SITEAPPNAME="example-sdwan-nw-site-${CURRENTVERSIONID}.jar"
# DEVICE應用名
DEVICEAPPNAME="example-sdwan-nw-device-${CURRENTVERSIONID}.jar"
# WEB應用名
WEBAPPNAME="example-web-dist"
# 網(wǎng)關部署路徑
ZUULAPPPATH="${HOME}/exampleb-sdwan-api-gateway/"
# SITE部署路徑
SITEAPPPATH="${HOME}/example-sdwan-nw-site/"
# DEVICE部署路徑
DEVICEAPPPATH="${HOME}/example-sdwan-nw-device/"
# WEB前端部署路徑
WEBAPPPATH="${HOME}/web/"

# VERSONDATE:版本部署日期
VERSIONDATE=$(date +"%Y%m%d")
BASEVERSIONPATH="/home/example/nas/sdwan"
# VERSIONPATH:版本下載存放路徑
VERSIONPATH="${BASEVERSIONPATH}/sdwan_version/${VERSIONDATE}"
# DBVERSIONPATH:版本數(shù)據(jù)庫sql腳本備份存放路徑
DBVERSIONPATH="${BASEVERSIONPATH}/db_version/${VERSIONDATE}"
# ZUULVERSIONPATH:網(wǎng)關微服務備份路徑
ZUULVERSIONPATH="${BASEVERSIONPATH}/zuul_version/${VERSIONDATE}"
# SITEVERSIONPATH:site微服務備份路徑
SITEVERSIONPATH="${BASEVERSIONPATH}/site_version/${VERSIONDATE}"
# DEVICEVERSIONPATH:device微服務備份路徑
DEVICEVERSIONPATH="${BASEVERSIONPATH}/device_version/${VERSIONDATE}"
# WEBVERSIONPATH: web前端備份路徑
WEBVERSIONPATH="${BASEVERSIONPATH}/web_version/${VERSIONDATE}"
# 腳本執(zhí)行日志存放路徑
LOGPATH="/tmp/${HOSTNAME}_${VERSIONDATE}.log"

# ******************** DEFINE ARGS END ***********************************
# ******************** FUNCTION func_info BEGIN **************************
function func_info(){
cat<<EOF
******************腳本執(zhí)行方法*****************
sh sdwan_version.sh <args1><args2><args3>
參數(shù)說明:
    args1:部署應用名稱,寫參數(shù)時需去掉"<"">"
        [zuul|site|device|web]
    args2:即將部署應用版本號
            1.3.0        
    args3:版本機上的版本包tar包全名
        upline-file-v1.3.tar.gz
示例:sh sdwan_version.sh zuul 1.3.0 upline-file-v1.3.tar.gz
EOF
}
# ******************** FUNCTION func_info END ***************************
# ******************** FUNCTION log_info BEGIN **************************
function log_info(){    
    echo "[$(date +'%Y-%m-%d %H:%M:%S')][INFO]"
}
# ******************** FUNCTION log_info END ***************************
# ******************** FUNCTION log_info BEGIN **************************
function log_error(){
    echo "[$(date +'%Y-%m-%d %H:%M:%S')][ERROR]"
}
# ******************** FUNCTION log_info END ***************************
# ******************** FUNCTION init_env BEGIN ***************************
function init_env(){
    echo "VERSION=${VERSION},v=${V},VERSIONPACKAGE=${VERSIONPACKAGE}"   
    echo "$(log_info)準備初始化環(huán)境..."

    if [ ! -s ${APPINFOFILE} ];then
        echo -ne "zuul_last_id: 1.1.0\nzuul_temporary_id:1.1.0\nzuul_latest_id:1.1.0\n" >>${APPINFOFILE}
        echo -ne "site_last_id: 1.1.0\nsite_temporary_id:1.1.0\nsite_latest_id:1.1.0\n" >>${APPINFOFILE}
        echo -ne "device_last_id: 1.1.0\ndevice_temporary_id:1.1.0\ndevice_latest_id:1.1.0\n" >>${APPINFOFILE}
        echo -ne "web_last_id: 1.1.0\nweb_temporary_id:1.1.0\nweb_latest_id:1.1.0\n" >>${APPINFOFILE}
    fi
    [ ! -f ${APPINFOFILE} ]&&{ echo "$(log_error)${APPINFOFILE}不存在";exit 110;}
    [ -z "${CURRENTVERSIONID}" ]&&{ echo "$(log_error)未獲取到當前應用的版本號!";exit 110;}
        [ ! -d ${VERSIONPATH} ]&&{ echo "$(log_info)${VERSIONPATH}不存在準備創(chuàng)建...";mkdir -p ${VERSIONPATH};}
    [ ! -d ${DBVERSIONPATH} ]&&{ echo "$(log_info)${DBVERSIONPATH}不存在準備創(chuàng)建...";mkdir -p ${DBVERSIONPATH};}
    case ${VERSION} in
        "zuul")
            [ ! -d ${ZUULVERSIONPATH} ]&&{ echo "$(log_info)${ZUULVERSIONPATH}不存在準備創(chuàng)建...";mkdir -p ${ZUULVERSIONPATH};}
        ;;
        "site") 
            [ ! -d ${SITEVERSIONPATH} ]&&{ echo "$(log_info)${SITEVERSIONPATH}不存在準備創(chuàng)建...";mkdir -p ${SITEVERSIONPATH};}
        ;;
        "device")
            [ ! -d ${DEVICEVERSIONPATH} ]&&{ echo "$(log_info)${DEVICEVERSIONPATH}不存在準備創(chuàng)建...";mkdir -p ${DEVICEVERSIONPATH};}
        ;;
        "web")
            [ ! -d ${WEBVERSIONPATH} ]&&{ echo "$(log_info)${WEBVERSIONPATH}不存在準備創(chuàng)建...";mkdir -p ${WEBVERSIONPATH};}
        ;;
        *)
            echo "$(log_error)參數(shù)錯誤,請重新輸入要操作版本"
            exit 110
        ;;
    esac
}
# ******************** FUNCTION init_env END *******************************
# ******************** FUNCTION backup_app BEGIN ***************************
function backup_app(){
    echo "${log_info}準備應用備份..."
    case ${VERSION} in
        "zuul")
        # 當前應用版本號
                CURRENTVERSIONID=$(cat ${APPINFOFILE}|grep "zuul_latest"|awk -F':' '{print $2}')
                # 網(wǎng)關應用名
                ZUULAPPNAME="example-sdwan-api-gateway-${CURRENTVERSIONID}.jar"             
        cd ${ZUULVERSIONPATH}        
        if [ ! -f ${ZUULAPPNAME} ];then
            [ ! -f ${ZUULAPPPATH}/${ZUULAPPNAME} ]&&{ echo "$(log_error)${ZUULAPPNAME}不存在無法備份";exit 120;}
            cp -a ${ZUULAPPPATH}/${ZUULAPPNAME} ${ZUULVERSIONPATH}  
          [ $? -eq 0 ]&&{ echo "$(log_info)${ZUULAPPNAME}備份成功";}||{ echo "$(log_error)${ZUULAPPNAME}備份失敗!";exit 120;}
          # 備份成功將當前生產版本號保存至temporary_id
          sed -i "s/zuul_temporary_id:.*/zuul_temporary_id:${V}/g" ${APPINFOFILE}
        else
            echo "$(log_info)${ZUULAPPNAME}備份已存在無需備份!"
        fi
        ;;
        "site")        
        # 當前應用版本號
                CURRENTVERSIONID=$(cat ${APPINFOFILE}|grep "site_latest"|awk -F':' '{print $2}')                
                # SITE應用名
                SITEAPPNAME="example-sdwan-nw-site-${CURRENTVERSIONID}.jar"             
        cd ${SITEVERSIONPATH}
        if [ ! -f ${SITEAPPNAME} ];then
            [ ! -f ${SITEAPPPATH}/${SITEAPPNAME} ]&&{ echo "$(log_error)${SITEAPPNAME}不存在無法備份";exit 130;}
            cp -a ${SITEAPPPATH}/${SITEAPPNAME} ${SITEVERSIONPATH} &>/dev/null 
          [ $? -eq 0 ]&&{ echo "$(log_info)${SITEAPPNAME}備份成功";}||{ echo "$(log_error)${SITEAPPNAME}備份失敗!";exit 130;}
          # 備份成功將當前生產版本號保存至temporary_id
          sed -i "s/site_temporary_id:.*/site_temporary_id:${V}/g" ${APPINFOFILE}
        else
            echo "$(log_info)${SITEAPPNAME}備份已存在無需備份!"
        fi
        ;;
        "device")
        # 當前應用版本號
                CURRENTVERSIONID=$(cat ${APPINFOFILE}|grep "device_latest"|awk -F':' '{print $2}')              
                # DEVICE應用名
                DEVICEAPPNAME="example-sdwan-nw-device-${CURRENTVERSIONID}.jar"             
        cd ${DEVICEVERSIONPATH}
        if [ ! -f ${DEVICEAPPNAME} ];then
            [ ! -f ${DEVICEAPPPATH}/${DEVICEAPPNAME} ]&&{ echo "$(log_error)${DEVICEAPPNAME}不存在無法備份";exit 140;}
            cp -a ${DEVICEAPPPATH}/${DEVICEAPPNAME} ${DEVICEVERSIONPATH} &>/dev/null 
          [ $? -eq 0 ]&&{ echo "$(log_info)${DEVICEAPPNAME}備份成功";}||{ echo "$(log_error){DEVICEAPPNAME}備份失??!";exit 140;}
          # 備份成功將當前生產版本號保存至temporary_id
          sed -i "s/device_temporary_id:.*/device_temporary_id:${V}/g" ${APPINFOFILE}
        else
            echo "$(log_info)${DEVICEAPPNAME}備份已存在無需備份!"
        fi
        ;;
        "web")
        # 當前應用版本號
                CURRENTVERSIONID=$(cat ${APPINFOFILE}|grep "web_latest"|awk -F':' '{print $2}')             
                # WEB應用名
                WEBAPPNAME="example-web-dist"
        cd ${WEBVERSIONPATH}
        if [ ! -f ${WEBAPPNAME}.tar.v${CURRENTVERSIONID}.gz ];then
            [ ! -d ${WEBAPPPATH}/${WEBAPPNAME} ]&&{ echo "$(log_error)${WEBAPPNAME}不存在無法備份";exit 150;}
            tar -zcf ${WEBAPPNAME}.tar.v${CURRENTVERSIONID}.gz -C ${WEBAPPPATH} ${WEBAPPNAME}
            # 二次備份,穩(wěn)定后可取消
            if [ -d ${WEBAPPPATH}/${WEBAPPNAME}_$(date +"%Y%m%d").bak ];then
                rm -rf ${WEBAPPPATH}/${WEBAPPNAME}_$(date +"%Y%m%d").bak
            fi
            mv ${WEBAPPPATH}/${WEBAPPNAME} ${WEBAPPPATH}/${WEBAPPNAME}_$(date +"%Y%m%d").bak       
          [ $? -eq 0 ]&&{ echo "$(log_info)${WEBAPPNAME}備份成功";}||{ echo "$(log_error)${WEBAPPNAME}備份失?。?quot;;exit 150;}
          # 備份成功將當前生產版本號保存至temporary_id
          sed -i "s/web_temporary_id:.*/web_temporary_id:${V}/g" ${APPINFOFILE}
        else
            echo "$(log_info)${WEBAPPNAME}備份已存在無需備份!"
        fi

        ;;
        *)
        echo "$(log_error)參數(shù)錯誤,請重新輸入要操作版本"
        exit 120
        ;;
    esac
}
# ******************** FUNCTION backup_app END *****************************
# ******************** FUNCTION deploy_app BEGIN ***************************
function deploy_app(){  
    cd ${VERSIONPATH}
    # 通過版本tar包獲取目錄名
    LOCALDIR=$(echo ${VERSIONPACKAGE}|awk -F '.tar' '{print $1}')
    [ ! -f ${VERSIONPACKAGE} ]&&{ echo "$(log_error)版本包不存在,請檢查版本包是否已放置在指定位置";exit 200;}
    tar -zxf ${VERSIONPACKAGE} &>/dev/null
    [ $? -ne 0 ]&&{ echo "$(log_error)版本包解壓異常";exit 200;}
    cd ${LOCALDIR}
   case ${VERSION} in
        "zuul")
        JAR=$(basename ${ZUULAPPPATH})
        [ ! -f ${JAR}-${V}.jar ]&&{ echo "$(log_error)${JAR}-${V}.jar應用jar包不存在,無法部署!";exit 210;}
        mv ${JAR}-${V}.jar ${ZUULAPPPATH} &>/dev/null
        [ $? -eq 0 ]&&{ echo "$(log_info)網(wǎng)關部署成功!";}||{ echo "$(log_error)網(wǎng)關部署失敗!";exit 210;}
        sed -i "s/zuul_latest_id:.*/zuul_latest_id:${V}/g" ${APPINFOFILE}
        # 部署成功將當前生產版本號保存至temporary_id
        sed -i "s/zuul_last_id:.*/zuul_last_id:${CURRENTVERSIONID}/g" ${APPINFOFILE}
        ;;
        "site")
        JAR=$(basename ${SITEAPPPATH})
        [ ! -f ${JAR}-${V}.jar ]&&{ echo "$(log_error)${JAR}-${V}.jar應用jar包不存在,無法部署!";exit 220;}
        mv ${JAR}-${V}.jar ${SITEAPPPATH} &>/dev/null
        [ $? -eq 0 ]&&{ echo "$(log_info)SITE微服務部署成功!";}||{ echo "$(log_error)SITE微服務部署失敗!";exit 220;}
        sed -i "s/site_latest_id:.*/site_latest_id:${V}/g" ${APPINFOFILE}
        # 部署成功將當前生產版本號保存至temporary_id
        sed -i "s/site_last_id:.*/site_last_id:${CURRENTVERSIONID}/g" ${APPINFOFILE}
        ;;
        "device")
        JAR=$(basename ${DEVICEAPPPATH})
        [ ! -f ${JAR}-${V}.jar ]&&{ echo "$(log_error)${JAR}-${V}.jar應用jar包不存在,無法部署!";exit 230;}
        mv ${JAR}-${V}.jar ${DEVICEAPPPATH} &>/dev/null
        [ $? -eq 0 ]&&{ echo "$(log_info)DEVICE微服務部署成功!";}||{ echo "$(log_error)DEVICE微服務部署失敗!";exit 230;}
        sed -i "s/device_latest_id:.*/device_latest_id:${V}/g" ${APPINFOFILE}
        # 部署成功將當前生產版本號保存至temporary_id
        sed -i "s/device_last_id:.*/devicd_last_id:${CURRENTVERSIONID}/g" ${APPINFOFILE}
        ;;
        "web")

        [ ! -f ${WEBAPPNAME}*.gz ]&&{ echo "${WEBAPPNAME}應用版本包不存在";exit 240;}
        tar -zxf ${WEBAPPNAME}*.gz -C ${WEBAPPPATH} &>/dev/null
        [ $? -eq 0 ]&&{ echo "$(log_info)前端應用部署成功!";}||{ echo "$(log_error)前端應用部署失敗!";exit 240;}        
        sed -i "s/web_latest_id:.*/web_latest_id:${V}/g" ${APPINFOFILE}
        # 部署成功將當前生產版本號保存至temporary_id
        sed -i "s/web_last_id:.*/web_last_id:${CURRENTVERSIONID}/g" ${APPINFOFILE}
        ;;
        *)
        echo "$(log_error)參數(shù)錯誤,請重新輸入要操作版本"
        func_info
        exit 111
        ;;
    esac
}
#******************** FUNCTION deploy_app END *****************************

function main(){

    case ${VERSION} in
        "zuul")
        init_env
        backup_app
        deploy_app
        ;;
        "site")
        init_env
        backup_app
        deploy_app
        ;;
        "device")
        init_env
        backup_app
        deploy_app
        ;;
        "web")
        init_env
        backup_app
        deploy_app        
        ;;
        *)
        echo "$(log_error)參數(shù)錯誤,請重新輸入要操作版本"
        func_info
        exit 111
        ;;
    esac

}
if [ ${#} -ne 3 ];then
    echo "參數(shù)個數(shù)錯誤"
    func_info
    exit 100
fi
main

下邊給出回滾的腳本

#!/bin/bash
#
# SCRIPTNAME:sdwan_version_rollback.sh
# DATE:      2020/03/12
# author:    Mright
# version:   V1.2
# desc:      
# V1.1:sdwan版本回滾腳本,通過傳入操作的應用名稱以及要回退至輸入的應用版本號,將當前應用進行回退
#            
#   V1.2:擴展version.info文件內容,根據(jù)不同應用記錄各應用的版本號,并修改相關處理腳本
#
# ******************** DEFINE INPUT BEGIN **********************************
set -o pipefail
# 版本信息
APPINFOFILE="${HOME}/version.info"
# VERSION:即將部署的版本名
VERSION=$1
# 要回滾版本號
V=$2
#V=${V:=${ROLLBACKVERSION}}
# 版本機上的tar包
#VERSIONPACKAGE=$3
# ******************** DEFINE INPUT END **********************************
# ******************** DEFINE ARGS BEGIN *********************************

APPINFOFILE="${HOME}/version.info"
# 網(wǎng)關應用名
ZUULAPPNAME="example-sdwan-api-zuul-${V}.jar"
# SITE應用名
SITEAPPNAME="example-sdwan-nw-site-${V}.jar"
# DEVICE應用名
DEVICEAPPNAME="example-sdwan-nw-device-${V}.jar"
# WEB應用名
WEBAPPNAME="example-web-dist.tar.v${V}.gz"
# 網(wǎng)關部署路徑
ZUULAPPPATH="${HOME}/example-sdwan-api-zuul/"
# SITE部署路徑
SITEAPPPATH="${HOME}/example-sdwan-nw-site/"
# DEVICE部署路徑
DEVICEAPPPATH="${HOME}/example-sdwan-nw-device/"
# WEB前端部署路徑
WEBAPPPATH="${HOME}/web/"

BASEVERSIONPATH="/home/example/nas/sdwan"
# VERSONDATE:版本部署日期
VERSIONDATE=$(date +"%Y%m%d")

# VERSIONPATH:版本下載存放路徑
VERSIONPATH="${BASEVERSIONPATH}/sdwan_version/${VERSIONDATE}"
# DBVERSIONPATH:版本數(shù)據(jù)庫sql腳本備份存放路徑
DBVERSIONPATH="${BASEVERSIONPATH}/db_version/${VERSIONDATE}"
# ZUULVERSIONPATH:網(wǎng)關微服務備份路徑
ZUULVERSIONPATH=$(find ${BASEVERSIONPATH}/zuul_version/ -name "${ZUULAPPNAME}"|tail -1|xargs -r dirname)
# SITEVERSIONPATH:site微服務備份路徑
SITEVERSIONPATH=$(find ${BASEVERSIONPATH}/site_version/ -name "${SITEAPPNAME}"|tail -1|xargs -r dirname)
# DEVICEVERSIONPATH:device微服務備份路徑
DEVICEVERSIONPATH=$(find ${BASEVERSIONPATH}/device_version/ -name "${DEVICEAPPNAME}"|tail -1|xargs -r dirname)
# WEBVERSIONPATH: web前端備份路徑
WEBVERSIONPATH=$(find ${BASEVERSIONPATH}/web_version/ -name "${WEBAPPNAME}"|tail -1|xargs -r dirname)
# 腳本執(zhí)行日志存放路徑
LOGPATH="/tmp/${HOSTNAME}_${VERSIONDATE}.log"

# ******************** DEFINE ARGS END ***********************************
# ******************** FUNCTION func_info BEGIN **************************
function func_info(){
cat<<EOF
******************腳本執(zhí)行方法*****************
sh sdwan_version.sh <args1><args2>
參數(shù)說明:
    args1:回滾應用名稱,寫參數(shù)時需去掉"<"">"
        [zuul|site|device|web]
    args2:要回滾的當前版本號
       1.1.0    
示例:sh sdwan_version_rollback.sh zuul 1.1.0
EOF
}
# ******************** FUNCTION func_info END ***************************
# ******************** FUNCTION log_info BEGIN **************************
function log_info(){    
    echo "[$(date +'%Y-%m-%d %H:%M:%S')][INFO]"
}
# ******************** FUNCTION log_info END ***************************
# ******************** FUNCTION log_info BEGIN **************************
function log_error(){
    echo "[$(date +'%Y-%m-%d %H:%M:%S')][ERROR]"
}
# ******************** FUNCTION log_info END ***************************
# ******************** FUNCTION rollback_app BEGIN *************************
function rollback_app(){
    [ ! -f ${APPINFOFILE} ]&&{ echo "$(log_error)${APPINFOFILE}不存在";exit 110;}

    case ${VERSION} in
        "zuul")
        CURRENTVERSION=$(cat ${APPINFOFILE}|grep "zuul_latest"|awk -F ':' '{print $2}')
                ROLLBACKVERSION=$(cat ${APPINFOFILE}|grep "zuul_latest"|awk -F ':' '{print $2}')
        [ "${V}" == "${CURRENTVERSION}" ]&&{ echo "$(log_info)要恢復版本號與當前版本號相同,無需恢復"&& exit 0;}
        cd ${ZUULVERSIONPATH}
        if [ -f ${ZUULAPPNAME} ];then
                CURRENTVERSIONNAME=$(echo ${ZUULAPPNAME}|sed -r "s/([0-9.]*)jar/${CURRENTVERSION}.jar/g")
                rm -f ${ZUULAPPPATH}/${CURRENTVERSIONNAME}
            cp -a ${ZUULVERSIONPATH}/${ZUULAPPNAME} ${ZUULAPPPATH}/  &>/dev/null
            [ $? -eq 0 ]&&{ echo "$(log_info)回滾成功!";}||{ echo "$(log_error)回滾失敗!";exit 500;}
            sed -i "s/zuul_latest_id:.*/zuul_latest_id:${V}/g" ${APPINFOFILE}
                # 部署成功將當前生產版本號保存至temporary_id
                sed -i "s/zuul_last_id:.*/zuul_last_id:${CURRENTVERSION}/g" ${APPINFOFILE} 
        else
            echo "$(log_error)${ZUULAPPNAME}不存在,無法回滾!"
            exit 500
        fi
        ;;
        "site")
        CURRENTVERSION=$(cat ${APPINFOFILE}|grep "site_latest"|awk -F ':' '{print $2}')
                ROLLBACKVERSION=$(cat ${APPINFOFILE}|grep "site_latest"|awk -F ':' '{print $2}')
        [ "${V}" == "${CURRENTVERSION}" ]&&{ echo "$(log_info)要恢復版本號與當前版本號相同,無需恢復"&& exit 0;}
        cd ${SITEVERSIONPATH}
        if [ -f ${SITEAPPNAME} ];then
                CURRENTVERSIONNAME=$(echo ${SITEAPPNAME}|sed -r "s/([0-9.]*)jar/${CURRENTVERSION}.jar/g")
                rm -f ${SITEAPPPATH}/${CURRENTVERSIONNAME}
            cp -a ${SITEVERSIONPATH}/${SITEAPPNAME} ${SITEAPPPATH}/  &>/dev/null
            [ $? -eq 0 ]&&{ echo "$(log_info)回滾成功!";}||{ echo "$(log_error)回滾失敗!";exit 500;}
            sed -i "s/site_latest_id:.*/site_latest_id:${V}/g" ${APPINFOFILE}
                # 部署成功將當前生產版本號保存至temporary_id
                sed -i "s/site_last_id:.*/site_last_id:${CURRENTVERSION}/g" ${APPINFOFILE} 
        else
            echo "$(log_error)${SITEAPPNAME}不存在,無法回滾!"
            exit 500
        fi

        ;;
        "device")
        CURRENTVERSION=$(cat ${APPINFOFILE}|grep "device_latest"|awk -F ':' '{print $2}')
                ROLLBACKVERSION=$(cat ${APPINFOFILE}|grep "device_latest"|awk -F ':' '{print $2}')
        [ "${V}" == "${CURRENTVERSION}" ]&&{ echo "$(log_info)要恢復版本號與當前版本號相同,無需恢復"&& exit 0;}
        cd ${DEVICEVERSIONPATH}
        if [ -f ${DEVICEAPPNAME} ];then
                CURRENTVERSIONNAME=$(echo ${DEVICEAPPNAME}|sed -r "s/([0-9.]*)jar/${CURRENTVERSION}.jar/g")
                rm -f ${DEVICEAPPPATH}/${CURRENTVERSIONNAME}
            cp -a ${DEVICEVERSIONPATH}/${DEVICEAPPNAME} ${DEVICEAPPPATH}/  &>/dev/null
            [ $? -eq 0 ]&&{ echo "$(log_info)回滾成功!";}||{ echo "$(log_error)回滾失敗!";exit 500;}
            sed -i "s/device_latest_id:.*/device_latest_id:${V}/g" ${APPINFOFILE}
                # 部署成功將當前生產版本號保存至temporary_id
                sed -i "s/device_last_id:.*/device_last_id:${CURRENTVERSION}/g" ${APPINFOFILE} 
        else
            echo "$(log_error)${DEVICEAPPNAME}不存在,無法回滾!"
            exit 500
        fi

        ;;
        "web")
        CURRENTVERSION=$(cat ${APPINFOFILE}|grep "web_latest"|awk -F ':' '{print $2}')
                ROLLBACKVERSION=$(cat ${APPINFOFILE}|grep "web_latest"|awk -F ':' '{print $2}')
        [ "${V}" == "${CURRENTVERSION}" ]&&{ echo "$(log_info)要恢復版本號與當前版本號相同,無需恢復"&& exit 0;}
        cd ${WEBVERSIONPATH}
        if [ -f ${WEBAPPNAME} ];then
                CURRENTVERSIONNAME=$(echo ${WEBAPPNAME}|cut -d '.' -f1)
                rm -rf ${WEBAPPPATH}/${CURRENTVERSIONNAME}
            tar -zxf ${WEBVERSIONPATH}/${WEBAPPNAME} -C ${WEBAPPPATH}  &>/dev/null
            [ $? -eq 0 ]&&{ echo "$(log_info)回滾成功!";}||{ echo "$(log_error)回滾失敗!";exit 500;}
            sed -i "s/web_latest_id:.*/web_latest_id:${V}/g" ${APPINFOFILE}
                # 部署成功將當前生產版本號保存至temporary_id
                sed -i "s/web_last_id:.*/web_last_id:${CURRENTVERSION}/g" ${APPINFOFILE} 
        else
            echo "$(log_error)${WEBAPPNAME}不存在,無法回滾!"
            exit 500
        fi

        ;;
        *)
        echo "$(log_error)參數(shù)錯誤,請重新輸入要操作版本"
        func_info
        exit 111
        ;;
    esac
}
# ******************** FUNCTION rollback_app END ***************************
if [ ${#} -ne 2 ];then
    echo "參數(shù)個數(shù)錯誤"
    func_info
    exit 100
fi
rollback_app

看完上述內容,你們掌握實現(xiàn)自動上線服務腳本的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站名稱:llinux實現(xiàn)自動上線服務腳本-創(chuàng)新互聯(lián)
本文路徑:http://jinyejixie.com/article12/ghidc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿網(wǎng)站建設網(wǎng)站建設、微信公眾號、品牌網(wǎng)站建設、網(wǎng)站排名、Google

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
鹿泉市| 尼勒克县| 南溪县| 江城| 黔西县| 樟树市| 吉首市| 长宁县| 东宁县| 梧州市| 马尔康县| 南和县| 五原县| 沂源县| 普宁市| 新田县| 慈利县| 孟津县| 威海市| 新乡县| 南和县| 永靖县| 柘荣县| 手机| 盐津县| 集安市| 永胜县| 阳西县| 巴马| 兴文县| 庄河市| 夏津县| 宜良县| 疏附县| 温州市| 遂溪县| 汉中市| 游戏| 金秀| 双江| 镇原县|