2021年12月22日 作者 zeroheart

jenkins 版本备份、回滚

1.创建项目时候,选择freestyle类型

2.参数化构建,选项参数类型

3.添加参数,用来指定版本

4.增加mvn build操作

5.shell配置,增加发布、回滚的shell

case $status  in
  deploy)
    echo "status:$status"
    path="${WORKSPACE}/bak/ebilling-admin/${BUILD_NUMBER}"      #创建每次要备份的目录
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi
    \cp -f ${WORKSPACE}/ebilling-admin/target/*.jar $path        #将打包好的jar包备份到相应目录,覆盖已存在的目标
    echo "Completing!"
    ;;
  rollback)
      echo "status:$status"
      echo "version:$version"
      cd ${WORKSPACE}/bak/ebilling-admin/$version            #进入备份目录
      \cp -f *.jar ${WORKSPACE}/ebilling-admin/target/       #将备份拷贝到程序打包目录中,并覆盖之前的jar包
      ;;
  *)
  exit
      ;;
esac

6.在增加一个shell,删除多余的备份

ReservedNum=5  #保留文件数
FileDir=${WORKSPACE}/bak/ebilling-admin/
date=$(date "+%Y%m%d-%H%M%S")

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 

7.在增加推送设置,配置就完成了

8.build 测试

参考文章: Jenkins版本回滚 – 简书 (jianshu.com)