网上看了挺多的回滚博文,对于没有做过回滚的毛豆总感觉萌萌的。所以毛豆决定将自己配的回滚写下来做个记录
添加参数化构建过程
这张图中的变量有: 选项参数名称, 字符参数名称,也就是说在shell脚本中能用Status和Version变量
接下来就是编写构建脚本
在构建中 增加构建步骤-->执行shell
我们首先测试下上面所说的变量如何获取
echo "获取选择的变量Status:$Status"
echo "获取输入的版本变量Version:$Version"
echo "获取工作空间位置WORKSPACE:${WORKSPACE}"
echo "获取任务名称JOB_NAME:${JOB_NAME}"
echo "获取构建号:${BUILD_NUMBER}"
保存之后进行构建测试
如上图,点击Build with Parameters 出现我们定义的Status,这里选择了Deploy参数
Vserion没写参数,点击开始构建查看结果
点击控制台输出查看执行过程
执行过程
如上图,控制台会输出执行的语句,也会输出执行语句的结果
正如注释所说我们可以获取到自己传入的参数,$Status输出的是我们所选的Deploy,也可以用内置的参数比如${BUILD_NUMBER}获取构建号
写回滚脚本
既然我们能获取到构建的时候的参数,我们就可以用shell写个备份回滚的脚本
case $Status in
Deploy) //如果Status选的是Deploy
echo "Status:$Status" // 输出变量
echo "WORKSPACE:${WORKSPACE}" // 输出变量
echo "JOB_NAME:${JOB_NAME}" // 输出变量
echo "JOB_NAME:${BUILD_NUMBER}" // 输出变量
path="${WORKSPACE}/bak" // 备份路径
if [ -d $path ]; //备份路径是否存在
then
echo "The files is already exists " // 如果存在提示已存在
else
mkdir -p $path // 不存在则创建
fi
./download.sh // 调用下载脚本
cp ${WORKSPACE}/target/dependency/ssm-1.0.0-SNAPSHOT.war ${WORKSPACE}/bak/ssm${BUILD_NUMBER}.war // 将下载的war拷贝到备份文件夹
;;
Rollback) // 如果是回滚
echo "Status:$Status" // 输出变量
echo "Version:$Version" // 输出变量
// 将对应版本号的war考到源目录
cp -rf ${WORKSPACE}/bak/ssm$Version.war ${WORKSPACE}/target/dependency/ssm-1.0.0-SNAPSHOT.war
// 备份war
cp ${WORKSPACE}/target/dependency/ssm-1.0.0-SNAPSHOT.war ${WORKSPACE}/bak/ssm${BUILD_NUMBER}.war
;;
*)
exit
;;
esac
tips:既然我们能拿到相应的参数,我们就可以根据自己的需求编写构建的逻辑,如上Deploy的时候执行什么逻辑,Rollback的时候执行什么逻辑,或者还有个Init等等等。。。自己进行编写
测试回滚
先正常部署
查看部署效果
修改了代码再次部署
退回上一版本
填写要退回的构建号
成功回滚到指定的构建
参考链接:https://www.jianshu.com/p/00bdc87cd3ee
关于自动发布请参考,docker+jenkins+SVN自动构建部署Maven项目其中的部分内容, 喜欢的请点赞支持下Thanks♪(・ω・)ノ