jenkins配置版本回退

1,120 阅读1分钟

打开项目配置,选择参数化构建过程,选择添加选项参数

image.png image.png

继续选择添加字符参数

image.png

image.png

在构建项,选择执行shell,填入以下命令代码(具体路径可根据自己的实际需求进行修改即可)

image.png

case $Status  in
  Deploy)

echo $PATH
node -v
npm -v
npm i yarn -g
yarn
# 删除项目目录中的dist文件夹
rm -rf ./dist/*
yarn build

echo "Status:$Status"
        path="/var/local/webfile/jenkinstest/historydist/${BUILD_NUMBER}"   # 创建每次要备份的目录
    # path="${WORKSPACE}/hisback/${BUILD_NUMBER}"      #创建每次要备份的目录
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi
    \cp -rf ${WORKSPACE}/dist/* $path        #将打包好的包备份到相应目录,覆盖已存在的目标
    \rm -rf /var/local/webfile/jenkinstest/dist/* # 删除服务器上该目录下的所有文件
    \cp -rf ${WORKSPACE}/dist/* /var/local/webfile/jenkinstest/dist/ # 拷贝该项目中的dist文件夹到服务器的目录下
    nginx -s reload   # 重启nginx
    echo "Completing!"
    ;;
  Rollback)
      echo "Status:$Status"
      echo "Version:$Version"
      # cd ${WORKSPACE}/hisback/$Version  #进入备份目录
      cd /var/local/webfile/jenkinstest/historydist/$Version   # 进入备份目录
      \rm -rf /var/local/webfile/jenkinstest/dist/*   # 删除服务器上该目录下的所有文件
      \cp -rf * /var/local/webfile/jenkinstest/dist/  # 拷贝该备份目录中的文件和文件夹到nginx服务的目录下
      nginx -s reload
      echo "Finshed!"
      ;;
  *)
  exit
  ;;
esac

之后再增加一个构建shell,输入以下命令,用于判断保留几次备份数据

ReservedNum=3  #保留文件版本数
# FileDir=${WORKSPACE}/hisback/
FileDir=/var/local/webfile/jenkinstest/historydist/
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 

补充说明:如遇到创建目录没有权限的情况,可参考上篇,给目录配置777权限即可。