Jenkins回滾可以通過每次發布從主干打tag,然后發布的時候發tag,比如tag, v1, v2,v3 如果我發布了v3,想要回滾回v2,直接在Jenkins中選擇v2的tag地址重新構建就可以回滾到v2發布時的代碼構建。
但是如果發布時沒有打tag的習慣或者覺得重構代碼比較費時如何操作?
下面看下如何配置

參數化構建過程中添加,如圖,按自己需要添加

接着是發布腳本

case $Status in
Deploy)
echo "=========== Generate deploy parameters =============="
path="${WORKSPACE}/bak/$BUILD_ID"
if [ -d $path ];
then
echo "===== The backup directory already exists ======="
else
mkdir -p $path
fi
#war包路徑
jar_file=$(find $WORKSPACE/$module/target -name *.war)
#war包名稱
war_file_name=$( basename $jar_file)
yes|cp -a $jar_file $WORKSPACE/bak/$BUILD_ID/
;;
Rollback)
echo "========== Generate Rollback parameters ============"
echo "Rollback_tag:$Rollback_tag"
#war包路徑
jar_file=$(find $WORKSPACE/bak/$Rollback_tag -name *.war)
#war包名稱
war_file_name=$( basename $jar_file)
;;
*)
exit
;;
esac
#如果使用ansbile發布請開啟下面的變量注入
#echo jar_file=$jar_file >>tmp.pro
#echo war_file_name=$war_file_name >>tmp.pro
echo "============ Start the deploy or rollback ============="
scp $jar_file root@172.10.10.17:/usr/local/newindex/
ssh root@172.10.10.17 /usr/local/newindex/deploy-new-index.sh
##############################################################
附上陳舊備份清理腳本
#/bin/bash
#飯票20190402
#用於判斷Jenkins的備份目錄,如果數量大於5就刪除最久的一個備份目錄
units=5
dir=`ls /jenkins/workspace/ | grep -v "package-lock.json"|grep -v "node_modules"`
for i in $dir
do
if [ -d /jenkins/workspace/$i/bak ];
then
for x in 1 2 3
do
dir_units=`ls /jenkins/workspace/$i/bak | wc -l`
if [ $dir_units -gt $units ];
then
a=`ls -tr /jenkins/workspace/$i/bak/ | head -1`
echo "$i 目錄下有需要清理的陳舊備份,第 $x 次清理 $a 備份目錄" `date`
#find /jenkins/workspace/$i/bak -name $a -exec rm -rf {} \;
find /jenkins/workspace/$i/bak -name $a | xargs rm -rf;
fi
done
fi
done