網(wǎng)上看了挺多的回滾博文,對于沒有做過回滾的毛豆總感覺萌萌的。所以毛豆決定將自己配的回滾寫下來做個記錄
添加參數(shù)化構(gòu)建過程

image.png
這張圖中的變量有: 選項參數(shù)名稱, 字符參數(shù)名稱,也就是說在shell腳本中能用Status和Version變量
接下來就是編寫構(gòu)建腳本
在構(gòu)建中 增加構(gòu)建步驟-->執(zhí)行shell
我們首先測試下上面所說的變量如何獲取

image.png
echo "獲取選擇的變量Status:$Status"
echo "獲取輸入的版本變量Version:$Version"
echo "獲取工作空間位置WORKSPACE:${WORKSPACE}"
echo "獲取任務(wù)名稱JOB_NAME:${JOB_NAME}"
echo "獲取構(gòu)建號:${BUILD_NUMBER}"
保存之后進行構(gòu)建測試

image.png
如上圖,點擊Build with Parameters 出現(xiàn)我們定義的Status,這里選擇了Deploy參數(shù)
Vserion沒寫參數(shù),點擊開始構(gòu)建查看結(jié)果
點擊控制臺輸出查看執(zhí)行過程

image.png
執(zhí)行過程

image.png
如上圖,控制臺會輸出執(zhí)行的語句,也會輸出執(zhí)行語句的結(jié)果
正如注釋所說我們可以獲取到自己傳入的參數(shù),$Status輸出的是我們所選的Deploy,也可以用內(nèi)置的參數(shù)比如${BUILD_NUMBER}獲取構(gòu)建號
寫回滾腳本
既然我們能獲取到構(gòu)建的時候的參數(shù),我們就可以用shell寫個備份回滾的腳本

image.png
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" // 輸出變量
// 將對應(yīng)版本號的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ù)自己的需求編寫構(gòu)建的邏輯,如上Deploy的時候執(zhí)行什么邏輯,Rollback的時候執(zhí)行什么邏輯,或者還有個Init等等等。。。自己進行編寫
測試回滾
先正常部署

image.png
查看部署效果

image.png
修改了代碼再次部署

image.png
退回上一版本
填寫要退回的構(gòu)建號

image.png
成功回滾到指定的構(gòu)建

image.png
參考鏈接:http://www.itdecent.cn/p/00bdc87cd3ee
關(guān)于自動發(fā)布請參考,docker+jenkins+SVN自動構(gòu)建部署Maven項目其中的部分內(nèi)容, 喜歡的請點贊支持下Thanks?(?ω?)?