jenkins先安装插件 Conditional BuildStep ,maven integration
默认基本配置你都装好了,那么进行下面操作
1. 新建自由风格工作流(不是maven风格)
2. 进入工作流,配置参数化构建过程,第一个,构建状态选择参数,是构建发布还是构建回滚,如下图:
image.png
3. 配置回滚操作时的Version版本参数,如下图:
image.png
4. 配置git地址,密码和秘钥自己选个配置,然后选好构建的分支
5. 选择增加构建步骤,选择Conditional step(single),这一步我们要进行shell条件判断是否要进行项目的build,如下图:
image.png
image.png
条件判断的shell如下,返回0表示要build,非0表示不build。如果需要build,就执行maven命令,打包项目
#!/bin/bash
if [ $BUILD_TYPE == Deploy ];then
echo "Deploy, build required"
exit 0
else
echo "No Need to build"
exit -1
fi
6. 继续增加第二个构建步骤,这次我们要对包进行备份,选择always即可,不需要像上一步增加判断。(如果熟悉流程后,可以灵活的把备份放到最后再增加一个构建步骤即可,这里只进行判断是否回滚,毕竟备份费时间)
image.png
case $BUILD_TYPE in
Deploy)
echo "BUILD_TYPE:$BUILD_TYPE"
path="/root/kids-version-manager/bak/${BUILD_NUMBER}"
if [ -d $path ];
then
echo "The files is aready exists "
else
mkdir -p $path
fi
cp -f ${WORKSPACE}/kids-world-api/target/*.jar $path
echo "completing"
;;
Rollback)
echo "BUILD_TYPE:$BUILD_TYPE"
echo "Version:$Version"
cp -f /root/kids-version-manager/bak/$Version/*.jar ${WORKSPACE}/kids-world-api/target
;;
*)
exit
;;
esac
7. 再增加一个构建步骤,这次像配置标准maven流程一样,配置一下项目的启动命令即可。参照 我的的文章https://www.jianshu.com/p/fd0b868e2780 的第4步即可。就是写个shell脚本启动一下项目
8. 如果闲的蛋蛋疼,可以再增加一个构建步骤,每次清理下备份,这里只保留了5个备份。
image.png
ReservedNum=5 #保留文件数
FileDir=/root/kids-version-manager/bak
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