網(wǎng)上看了挺多的回滾博文,對(duì)于沒(méi)有做過(guò)回滾的毛豆總感覺(jué)萌萌的亦渗。所以毛豆決定將自己配的回滾寫(xiě)下來(lái)做個(gè)記錄
添加參數(shù)化構(gòu)建過(guò)程
這張圖中的變量有: 選項(xiàng)參數(shù)名稱, 字符參數(shù)名稱汁尺,也就是說(shuō)在shell腳本中能用Status和Version變量
接下來(lái)就是編寫(xiě)構(gòu)建腳本
在構(gòu)建中 增加構(gòu)建步驟-->執(zhí)行shell
我們首先測(cè)試下上面所說(shuō)的變量如何獲取
echo "獲取選擇的變量Status:$Status"
echo "獲取輸入的版本變量Version:$Version"
echo "獲取工作空間位置WORKSPACE:${WORKSPACE}"
echo "獲取任務(wù)名稱JOB_NAME:${JOB_NAME}"
echo "獲取構(gòu)建號(hào):${BUILD_NUMBER}"
保存之后進(jìn)行構(gòu)建測(cè)試
如上圖法精,點(diǎn)擊Build with Parameters 出現(xiàn)我們定義的Status,這里選擇了Deploy參數(shù)
Vserion沒(méi)寫(xiě)參數(shù),點(diǎn)擊開(kāi)始構(gòu)建查看結(jié)果
點(diǎn)擊控制臺(tái)輸出查看執(zhí)行過(guò)程
執(zhí)行過(guò)程
如上圖痴突,控制臺(tái)會(huì)輸出執(zhí)行的語(yǔ)句搂蜓,也會(huì)輸出執(zhí)行語(yǔ)句的結(jié)果
正如注釋所說(shuō)我們可以獲取到自己傳入的參數(shù),$Status輸出的是我們所選的Deploy辽装,也可以用內(nèi)置的參數(shù)比如${BUILD_NUMBER}獲取構(gòu)建號(hào)
寫(xiě)回滾腳本
既然我們能獲取到構(gòu)建的時(shí)候的參數(shù)帮碰,我們就可以用shell寫(xiě)個(gè)備份回滾的腳本
case $Status in
Deploy) //如果Status選的是Deploy
echo "Status:$Status" // 輸出變量
echo "WORKSPACE:${WORKSPACE}" // 輸出變量
echo "JOB_NAME:${JOB_NAME}" // 輸出變量
echo "JOB_NAME:${BUILD_NUMBER}" // 輸出變量
path="${WORKSPACE}/bak" // 備份路徑
if [ -d $path ]; //備份路徑是否存在
then
echo "The files is already exists " // 如果存在提示已存在
else
mkdir -p $path // 不存在則創(chuàng)建
fi
./download.sh // 調(diào)用下載腳本
cp ${WORKSPACE}/target/dependency/ssm-1.0.0-SNAPSHOT.war ${WORKSPACE}/bak/ssm${BUILD_NUMBER}.war // 將下載的war拷貝到備份文件夾
;;
Rollback) // 如果是回滾
echo "Status:$Status" // 輸出變量
echo "Version:$Version" // 輸出變量
// 將對(duì)應(yīng)版本號(hào)的war考到源目錄
cp -rf ${WORKSPACE}/bak/ssm$Version.war ${WORKSPACE}/target/dependency/ssm-1.0.0-SNAPSHOT.war
// 備份war
cp ${WORKSPACE}/target/dependency/ssm-1.0.0-SNAPSHOT.war ${WORKSPACE}/bak/ssm${BUILD_NUMBER}.war
;;
*)
exit
;;
esac
tips:既然我們能拿到相應(yīng)的參數(shù),我們就可以根據(jù)自己的需求編寫(xiě)構(gòu)建的邏輯,如上Deploy的時(shí)候執(zhí)行什么邏輯,Rollback的時(shí)候執(zhí)行什么邏輯拾积,或者還有個(gè)Init等等等殉挽。。拓巧。自己進(jìn)行編寫(xiě)
測(cè)試回滾
先正常部署
查看部署效果
修改了代碼再次部署
退回上一版本
填寫(xiě)要退回的構(gòu)建號(hào)
成功回滾到指定的構(gòu)建
參考鏈接:http://www.reibang.com/p/00bdc87cd3ee
關(guān)于自動(dòng)發(fā)布請(qǐng)參考斯碌,docker+jenkins+SVN自動(dòng)構(gòu)建部署Maven項(xiàng)目其中的部分內(nèi)容, 喜歡的請(qǐng)點(diǎn)贊支持下Thanks?(?ω?)?