jenkins脚本回滚

网上看了挺多的回滚博文,对于没有做过回滚的毛豆总感觉萌萌的。所以毛豆决定将自己配的回滚写下来做个记录

添加参数化构建过程

image.png

这张图中的变量有: 选项参数名称, 字符参数名称,也就是说在shell脚本中能用Status和Version变量

接下来就是编写构建脚本

在构建中 增加构建步骤-->执行shell
我们首先测试下上面所说的变量如何获取

image.png

echo "获取选择的变量Status:$Status"
echo "获取输入的版本变量Version:$Version"
echo "获取工作空间位置WORKSPACE:${WORKSPACE}"
echo "获取任务名称JOB_NAME:${JOB_NAME}"
echo "获取构建号:${BUILD_NUMBER}"

保存之后进行构建测试


image.png

如上图,点击Build with Parameters 出现我们定义的Status,这里选择了Deploy参数
Vserion没写参数,点击开始构建查看结果

点击控制台输出查看执行过程


image.png

执行过程


image.png

如上图,控制台会输出执行的语句,也会输出执行语句的结果
正如注释所说我们可以获取到自己传入的参数,$Status输出的是我们所选的Deploy,也可以用内置的参数比如${BUILD_NUMBER}获取构建号

写回滚脚本

既然我们能获取到构建的时候的参数,我们就可以用shell写个备份回滚的脚本


image.png
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等等等。。。自己进行编写

测试回滚

先正常部署


image.png

查看部署效果


image.png

修改了代码再次部署

image.png

退回上一版本

填写要退回的构建号


image.png

成功回滚到指定的构建

image.png

参考链接:https://www.jianshu.com/p/00bdc87cd3ee

关于自动发布请参考,docker+jenkins+SVN自动构建部署Maven项目其中的部分内容, 喜欢的请点赞支持下Thanks♪(・ω・)ノ

你可能感兴趣的:(jenkins脚本回滚)