llinux实现自动上线服务脚本
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,今天小编就为大家带来一篇有关llinux实现自动上线服务脚本的文章。小编觉得挺实用的,为此分享给大家做个参考。一起跟随小编过来看看吧。写脚本之前先交代一下整个升级的流程:上边的流程大体是这样,其实整体
千家信息网最后更新 2025年12月02日llinux实现自动上线服务脚本
今天小编就为大家带来一篇有关llinux实现自动上线服务脚本的文章。小编觉得挺实用的,为此分享给大家做个参考。一起跟随小编过来看看吧。写脚本之前先交代一下整个升级的流程:
上边的流程大体是这样,其实整体并不难,复杂的是之前的各种判断。看下脚本是写成了两个脚本文件,上线部署和失败后的回退脚本,应用启停的脚本过会再提供。
#!/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=$2V=${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}')# 网关应用名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"# 网关部署路径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:版本数据库sql脚本备份存放路径DBVERSIONPATH="${BASEVERSIONPATH}/db_version/${VERSIONDATE}"# ZUULVERSIONPATH:网关微服务备份路径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}"# 脚本执行日志存放路径LOGPATH="/tmp/${HOSTNAME}_${VERSIONDATE}.log"# ******************** DEFINE ARGS END ***********************************# ******************** FUNCTION func_info BEGIN **************************function func_info(){cat<参数说明: args1:部署应用名称,写参数时需去掉"<"">" [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.gzEOF}# ******************** 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)准备初始化环境..." 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}不存在准备创建...";mkdir -p ${VERSIONPATH};} [ ! -d ${DBVERSIONPATH} ]&&{ echo "$(log_info)${DBVERSIONPATH}不存在准备创建...";mkdir -p ${DBVERSIONPATH};} case ${VERSION} in "zuul") [ ! -d ${ZUULVERSIONPATH} ]&&{ echo "$(log_info)${ZUULVERSIONPATH}不存在准备创建...";mkdir -p ${ZUULVERSIONPATH};} ;; "site") [ ! -d ${SITEVERSIONPATH} ]&&{ echo "$(log_info)${SITEVERSIONPATH}不存在准备创建...";mkdir -p ${SITEVERSIONPATH};} ;; "device") [ ! -d ${DEVICEVERSIONPATH} ]&&{ echo "$(log_info)${DEVICEVERSIONPATH}不存在准备创建...";mkdir -p ${DEVICEVERSIONPATH};} ;; "web") [ ! -d ${WEBVERSIONPATH} ]&&{ echo "$(log_info)${WEBVERSIONPATH}不存在准备创建...";mkdir -p ${WEBVERSIONPATH};} ;; *) echo "$(log_error)参数错误,请重新输入要操作版本" 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}') # 网关应用名 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} # 二次备份,稳定后可取消 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}备份失败!";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)参数错误,请重新输入要操作版本" 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)网关部署成功!";}||{ echo "$(log_error)网关部署失败!";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)参数错误,请重新输入要操作版本" 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)参数错误,请重新输入要操作版本" func_info exit 111 ;; esac}if [ ${#} -ne 3 ];then echo "参数个数错误" func_info exit 100fimain 下边给出回滚的脚本
#!/bin/bash## SCRIPTNAME:sdwan_version_rollback.sh# DATE: 2020/03/12# author: Mright# version: V1.2# desc: # V1.1:sdwan版本回滚脚本,通过传入操作的应用名称以及要回退至输入的应用版本号,将当前应用进行回退# # V1.2:扩展version.info文件内容,根据不同应用记录各应用的版本号,并修改相关处理脚本## ******************** 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"# 网关应用名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"# 网关部署路径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:版本数据库sql脚本备份存放路径DBVERSIONPATH="${BASEVERSIONPATH}/db_version/${VERSIONDATE}"# ZUULVERSIONPATH:网关微服务备份路径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)# 脚本执行日志存放路径LOGPATH="/tmp/${HOSTNAME}_${VERSIONDATE}.log"# ******************** DEFINE ARGS END ***********************************# ******************** FUNCTION func_info BEGIN **************************function func_info(){cat<参数说明: args1:回滚应用名称,写参数时需去掉"<"">" [zuul|site|device|web] args2:要回滚的当前版本号 1.1.0 示例:sh sdwan_version_rollback.sh zuul 1.1.0EOF}# ******************** 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)参数错误,请重新输入要操作版本" func_info exit 111 ;; esac}# ******************** FUNCTION rollback_app END ***************************if [ ${#} -ne 2 ];then echo "参数个数错误" func_info exit 100firollback_app 看完上述内容,你们掌握实现自动上线服务脚本的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
版本
应用
备份
成功
路径
脚本
生产
参数
网关
服务
准备
错误
前端
输入
相同
内容
名称
文件
方法
不同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海秉钧网络技术
网络技术基础视频
网络技术 行业研究
数据库检索工具
服务器访问不了外网
网络安全态势感知目标
达梦数据库一个字段去重
单身日记软件开发
网络安全的新思想是什么
汕头智能软件开发设计
昭通计算机网络技术院校报名
四川阆中网络安全宣传周
数据库统计缺失字段
如何成为网络安全软件代理
云服务器删了怎么办
花都小程序软件开发设计
网络安全测评报告怎么备案
软件开发竞标优势怎么写
刀片服务器巡检报告
强类型 数据库
软件开发拿来主义的优势
网络安全课堂第四期
商务星软件开发
数据库维护的具体工作
计算机网络技术与应用专业排名
wpf调用数据库
金昌熏风网络技术服务
网络安全与信息化研究生就业
如何成为网络安全软件代理
口袋妖怪复刻九游数据库