Jenkins 版本回滚

有时候可能代码提交上去了,但是发现有个BUG,这时候就需要回滚到历史的版本中了

  • 接上章前端自动化部署 vue

配置参数化构建过程

  • 选项参数

  • 字符参数

打包备份脚本

jenkins内置变量

  • WORKSPACE: 作为工作空间分配给构建目录的绝对路径。

  • JOB_NAME: 此版本的项目名称

  • BUILD_NUMBER: 当前版本号(是 Jenkins 运行任务的版本)

如果选择“Deploy”就执行创建文件夹(用于保存压缩后的文件),然后执行压缩文件

如果选择”RollBACK”,获取到要回滚的BUILD_NUMBER,查找到文件内容包含 BUILD_NUMBER的压缩文件,我就把这个文件复制成为最新的构建文件。

备份回滚脚本

考虑到会经常打包部署,如果每次都备份的话,那么磁盘会不够用,我们在这里设置一个自动删除机制

发布

发布选择Deploy--->开始构建,即可开始发布。

回滚

回滚选择Rollback--->输入回滚版本---->开始构建,版本号从构建历史中选择一个输入

代码部分

回滚备份 Shell 代码

#!/bin/bash

function vue_build()
{
    node -v 
    npm -v 
    rm -rf package-lock.json
    echo "npm install"
    npm run build
    tar zcvf dist.tar.gz ./dist
}


case $Status  in
  Deploy)
    echo "Status:$Status"
    path="${WORKSPACE}/bak/${BUILD_NUMBER}"    # 创建每次要备份的目录
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi


    vue_build                                 # 调用 nodejs 编译打包


    \cp -f ${WORKSPACE}/*.tar.gz $path        # 将打包好的压缩包备份到相应目录,覆盖已存在的目标
    echo "Completing!"
    ;;
  Rollback)
      echo "Status:$Status"
      echo "Version:$Version"
      cd ${WORKSPACE}/bak/$Version            # 进入备份目录
      \cp -f *.tar.gz ${WORKSPACE}/           # 将备份拷贝到程序打包目录中,并覆盖之前的压缩包
      ;;
  *)
  exit
      ;;
esac

自动删除历史老旧备份

#!/bin/bash
echo "开始清除老旧版本备份......"
ReservedNum=10                         # 备份保量数
FileDir=${WORKSPACE}/bak/              # 备份目录
date=$(date "+%Y%m%d-%H%M%S")          # 删除备份日期
cd $FileDir                            # 进入备份目录
FileNum=$(ls -l | grep '^d' | wc -l)   # 当前有几个文件夹,即几个备份

while [[ ${FileNum} -gt ${ReservedNum} ]]; do
    echo "开始执行删除"
    OldFile=$(ls -rt | head -1)          # 获取最旧的那个备份文件夹
    echo  $date "Delete File:"$OldFile
    rm -rf $FileDir/$OldFile
    let "FileNum--"
done 

Last updated