如果选择“Deploy”就执行创建文件夹(用于保存压缩后的文件),然后执行压缩文件
如果选择”RollBACK”,获取到要回滚的BUILD_NUMBER,查找到文件内容包含 BUILD_NUMBER的压缩文件,我就把这个文件复制成为最新的构建文件。
考虑到会经常打包部署,如果每次都备份的话,那么磁盘会不够用,我们在这里设置一个自动删除机制
发布选择Deploy--->开始构建,即可开始发布。
回滚选择Rollback--->输入回滚版本---->开始构建,版本号从构建历史中选择一个输入
#!/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