使用Shell腳本優(yōu)化Linux服務(wù)器上部署流程
寫在前面
上次我們講了windows下的bat腳本打包上傳, 那么這次我們接著講下linux下的解壓發(fā)布。這里事先聲明,沒有自動擋的車------Jenkins之類的持續(xù)集成工具(如果有需要可以看我之前寫的gitlab和jenkins文章,或者參照我github上的github Actions,或者Travis CI之類的工具),因為是guoqi、yinhang、zhengfu那邊的環(huán)境,加之我就是一個權(quán)限很低的開發(fā),不讓搞,所以就直接點,上腳本吧。
解決了什么問題?
人工發(fā)包邏輯不難,但很繁瑣 人工發(fā)包容易打錯包,打錯字,忘記打包,忘記發(fā)包 人工發(fā)包因人而異,每個人有每個人的風(fēng)格,沒有規(guī)范,不利于回溯
直接上腳本
#!/bin/bash
# 定義你項目的路徑,也就是解壓后nignx配置的html靜態(tài)資源目錄
declare DEPLOY_PATH="/heaven/965"
## 封裝一個輸入方法
function get_input() {
echo "#========中電惠融一鍵部署-開始========#"
echo "請輸入要部署的項目集合的數(shù)字編號:"
echo "1、app 2、biz 3、fin"
echo "4、app biz 5、app fin 6、biz fin"
echo "7、app biz fin 8、退出"
read -t 10 DEPLOY_NUM
case $DEPLOY_NUM in
"1")
unzip2replace "app"
;;
"2")
unzip2replace "biz"
;;
"3")
unzip2replace "fin"
;;
"4")
unzip2replace "app"
unzip2replace "biz"
;;
"5")
unzip2replace "app"
unzip2replace "fin"
;;
"6")
unzip2replace "biz"
unzip2replace "fin"
;;
"7")
unzip2replace "app"
unzip2replace "biz"
unzip2replace "fin"
;;
*)
exit 0
esac
echo "#========中電惠融一鍵部署-結(jié)束========#"
}
# 解壓替換方法
function unzip2replace() {
echo "開始配置${1}端"
sleep 3
cd "${DEPLOY_PATH}/${1}"
echo "開始備份${1}端"
sleep 3
if [ -d "dist" ];then
echo "dist文件夾命中,開始備份"
cur_date=`date '+%Y%m%d%H%M%S'`
mv dist "dist-${cur_date}"
else
echo "dist文件夾未命中,無需備份"
fi
filename=`ls *.zip -t |head -n1|awk '{print $0}'`
echo "開始解壓${filename}到目錄..."
sleep 3
unzip ${filename}
echo "配置${1}端完成"
}
# 執(zhí)行輸入方法
get_input
Shell相關(guān)知識點解析
找出最新的zip文件
filename=`ls *.zip -t |head -n1|awk '{print $0}'`
定義一個變量DEPLOY_PATH
declare DEPLOY_PATH="/heaven/965"
定義一個方法unzip2replace
function unzip2replace() {
}
解壓文件
# zip包
unzip 965.zip
# tar包
tar -zxvf 965.tar.gz
獲取當(dāng)前日期
date '+%Y%m%d%H%M%S'
判斷dist文件夾是否存在,不存在就do nothing
if [ -d "dist" ];then
echo "dist文件夾命中,開始備份"
cur_date=`date '+%Y%m%d%H%M%S'`
mv dist "dist-${cur_date}"
else
echo "dist文件夾未命中,無需備份"
fi
獲取函數(shù)第一個參數(shù) “$1"
最后
通過樓上的例子,我們學(xué)習(xí)了一些shell腳本的知識,可能一些企業(yè)就是不招運維啊,所以一部分工作就讓開發(fā)來搞,無可厚非。但是你想一下,每次都上傳再解壓再替換啥的,東西是很簡單,但是很繁瑣,而且有些時候也容易打錯字啥的,既然有這些詬病,那為什么不停下來思考下,用腳本去搞呢?本文就是期望給讀者一些啟迪,在處理計算機上的一些復(fù)雜的、或者是繁瑣的事情,把它拆成一些指令集,匯聚成一把腳本,./deploy.sh,./deploy.bat完事,當(dāng)然啦,隨著技術(shù)的發(fā)展,如果領(lǐng)導(dǎo)能聽得進去的話,最好還是搞自動化集成部署,遺憾的是,這樣的領(lǐng)導(dǎo),我在國企、傳統(tǒng)的公司從未遇到。。。。。。
評論
圖片
表情
