打开项目配置,选择参数化构建过程,选择添加选项参数
继续选择添加字符参数
在构建项,选择执行shell,填入以下命令代码(具体路径可根据自己的实际需求进行修改即可)
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权限即可。