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脚本:

 

posted @ 2020-11-08 00:14  zflinux21  阅读(173)  评论(0编辑  收藏  举报