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 [email protected]:/usr/local/newindex/
ssh [email protected] /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
05-12 20:19