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