Jenkins版本回滚
[参考] https://www.jianshu.com/p/af5fecaa8357
博主心得:
构建脚本可以写入到shell脚本文件中,这样避免多个同类型项目每次都要粘贴一次,以便做到统一管理同类型项目构建策略。
另外我也对脚本进行了一些小调整,备份清理脚本可以通过参数进行传递,以便不同项目针对不同情况设置,无参传递则使用默认值:5
# 自动备份部署war包
/data/deploy/auto-bak-deploy-war.sh
#!/usr/bin # 自动备份部署war包 FileDir=${WORKSPACE}/bak/ #备份目录 case $Status in Deploy) echo "Status:$Status" path="${FileDir}/${BUILD_NUMBER}" #创建每次要备份的目录 if [ -d $path ]; then echo "The files is already exists " else mkdir -p $path fi \cp -f ${WORKSPACE}/target/*.war $path #将打包好的war包备份到相应目录,覆盖已存在的目标 echo "\cp -f ${WORKSPACE}/target/*.war ${path}" echo "Completing!" ;; Rollback) echo "Status:$Status" echo "Version:$Version" cd ${FileDir}/$Version #进入备份目录 \cp -f *.war ${WORKSPACE}/target/ #将备份拷贝到程序打包目录中,并覆盖之前的war包 echo "\cp -f ${FileDir}/${Version}/*.war ${WORKSPACE}/target/" ;; *) exit ;; esac echo -e "Current Bak Version List:" $(ls ${FileDir}) "\n\n"
#自动清理过期部署war包
/data/deploy/auto-clear-expire-bak-deploy-war.sh
#!/user/bin # 自动清理过期部署war包 defaultReservedNum=5 # 默认保留文件数 # 是否有参数传递保留文件数 if [ "$1" ];then expr $1 + 0 &>/dev/null if [ $? == 0 -a $1 > 0 ] ;then ReservedNum=$1 #保留文件数 else ReservedNum=${defaultReservedNum} fi else ReservedNum=${defaultReservedNum} fi (date "+%Y%m%d-%H%M%S") echo ReservedNum: ${ReservedNum} FileDir=${WORKSPACE}/bak/ #备份目录 cd $FileDir #进入备份目录 FileNum=$(ls -l | grep '^d' | wc -l) #当前有几个文件夹,即几个备份 while(( $FileNum > $ReservedNum)) do OldFile=$(ls -rt | head -1) #获取最旧的那个备份文件夹 echo $date "Delete File:"$OldFile rm -rf $FileDir/$OldFile let "FileNum--" done echo -e "Current Bak Version List:" $(ls ${FileDir}) "\n\n"
Jenkins构建shell脚本: