Jenkins回滚可以通过每次发布从主干打tag,然后发布的时候发tag,比如tag, v1, v2,v3 如果我发布了v3,想要回滚回v2,直接在Jenkins中选择v2的tag地址重新构建就可以回滚到v2发布时的代码构建。
 
但是如果发布时没有打tag的习惯或者觉得重构代码比较费时如何操作?
下面看下如何配置
 
参数化构建过程中添加,如图,按自己需要添加
接着是发布脚本
 
case $Status  in
  Deploy)
    echo "=========== Generate deploy parameters =============="
    path="${WORKSPACE}/bak/$BUILD_ID"
    if [ -d $path ];
    then
        echo "===== The backup directory already exists ======="
    else
        mkdir -p  $path
    fi
    
    #war包路径
    jar_file=$(find $WORKSPACE/$module/target -name *.war)
    #war包名称
    war_file_name=$( basename $jar_file)
    
    yes|cp -a $jar_file $WORKSPACE/bak/$BUILD_ID/
    ;;
  Rollback)
    echo "========== Generate Rollback parameters ============"
    echo "Rollback_tag:$Rollback_tag"
    
    #war包路径
    jar_file=$(find $WORKSPACE/bak/$Rollback_tag -name *.war)
    
    #war包名称
    war_file_name=$( basename $jar_file)
      ;;
  *)
  exit
      ;;
esac
 
#如果使用ansbile发布请开启下面的变量注入
#echo jar_file=$jar_file >>tmp.pro
#echo war_file_name=$war_file_name >>tmp.pro
 
echo "============ Start the deploy or rollback ============="
scp $jar_file root@172.10.10.17:/usr/local/newindex/
ssh root@172.10.10.17 /usr/local/newindex/deploy-new-index.sh
 
##############################################################
附上陈旧备份清理脚本
#/bin/bash
#饭票20190402
#用于判断Jenkins的备份目录,如果数量大于5就删除最久的一个备份目录
units=5
dir=`ls /jenkins/workspace/ | grep -v "package-lock.json"|grep -v "node_modules"`
 
for i in $dir
do
  if [ -d /jenkins/workspace/$i/bak ];
  then
     for x in 1 2 3
     do
      dir_units=`ls /jenkins/workspace/$i/bak | wc -l`
      if [ $dir_units -gt $units ];
      then
         a=`ls -tr /jenkins/workspace/$i/bak/ | head -1`
         echo "$i 目录下有需要清理的陈旧备份,第 $x 次清理 $a 备份目录" `date`
         #find /jenkins/workspace/$i/bak -name $a  -exec rm -rf {} \;
         find /jenkins/workspace/$i/bak -name $a | xargs rm -rf;
     fi
     done
fi
 
done

Jenkins发布回滚方案的更多相关文章

  1. Jenkins+Ansible+Gitlab自动发布/回滚Spring项目

    一.实现方法流程图 流程图如下:代码托管在本地GitLab上(为了复现整套流水线,我直接使用了GitHub,懒得再搭建GitLab),开发完成后提交代码到代码仓库,[自动]触发Jenkins进行持续集 ...

  2. 在Azure DevOps Server(TFS系统)中部署回退/回滚方案(Rollback)

    概述 Azure DevOps Server(之前名TFS)是微软公司实现软件研发.测试和部署一体化的全流程解决方案.在近几年的研发过程中,Azure DevOps Server 大幅增强了软件部署过 ...

  3. 自动化部署-Jenkins备份回滚

    1.备份 备份可以使用批处理命令解决,实际就是复制当前发布文件 ::备份文件夹名,使用当前时间 set foldername=%date:~0,4%%date:~5,2%%date:~8,2%%tim ...

  4. jenkins自动化回滚阿里云k8s应用版本

    jenkins 服务器需先保留着原先构建的不同版本的应用镜像 [root@jenkins sh]# docker images|grep "maintain" registry-v ...

  5. jenkinsfile or pipline 实现微服务自动发布回滚流程

    1 #!/usr/bin/env groovy Jenkinsfile node { //服务名称 def service_name = "**" //包名 def service ...

  6. Jenkins 搭建企业实战案例 (发布与回滚)

    让我们的代码部署变得easy,不再难,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins非常易于安装和配置,简单易用 ...

  7. 2、jenkins+svn自动发布和回滚

    Jenkins配置回滚思路: 目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作.后续实现 以下配置可以为每个项目备份构建文件到本地指定路径 ...

  8. jenkins:一键回滚站点集群

    最近在学习jenkins过程中整理了大量资料,都收录在<jenkins自动化工具使用教程>,但依然缺少一些具体实现细节. 这篇文章,介绍jenkins做集群回滚时的两个设计方案,让一键回滚 ...

  9. Git reset head revert 回滚

    Overview 涉及Git一些日常操作 :) 基础知识 <Pro Git>至少了解branch,commit的概念,及基本的原理 Git常用魔法 存档:master代码回滚方法 我是QA ...

随机推荐

  1. 前端开发 | 尝试用Markdown写一下近几个月的总结

    近期总结 回顾 半年前 半年前,接触了前端一年多(工作半年)的我了解的东西只有下面这些.因为在公司里的工作就是切静态页,捣鼓CMS. HTML (比较简洁的编写HTML) CSS/CSS3 (PC兼容 ...

  2. Java入门指南-01 基本概要说明

    一.Java语言概述 Java是一门面向对象编程语言.编程,即编写程序.程序对于我们来说,应该是有所了解的.只是有可能你们不知道而已.比如,我们电脑上的 QQ.谷歌浏览器等,都叫做应用程序. 二.本系 ...

  3. primer看完了

    放假这将近十天吧,终于把C++ Primer中文版第五版大致看完了,然而第四部分(高级主题)还是没有看,感觉那是需要有足够的项目经验再看. 另外,看一遍肯定不够,忘得也会很快,我十分确认今后还会很多次 ...

  4. 第二章 Vue快速入门--20 品牌案例-完成品牌列表的添加功能+ 21 品牌案例-根据Id完成品牌的删除

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  5. hdu4352 XHXJ's LIS[数位DP套状压DP+LIS$O(nlogn)$]

    统计$[L,R]$内LIS长度为$k$的数的个数,$Q \le 10000,L,R < 2^{63}-1,k \le 10$. 首先肯定是数位DP.然后考虑怎么做这个dp.如果把$k$记录到状态 ...

  6. maven在eclipse运行命令和calss文件没有更新的问题

    使用Eclipse Maven插件[Run As]-[Maven build]时并未为其指定goal或phase 解决方法:  1.使用Eclipse Maven插件[Run As]-[Maven b ...

  7. 字符串类QString

    采用Unicode编码,所以一个QChar占用两个字节使用隐式共享技术来节省内存和减少不必要的数据拷贝跨平台使用,不用考虑字符串的平台兼容性QString直接支持字符串和数字之间的相互转换QStrin ...

  8. 在Controller中使用AOP

    转:http://usherlight.iteye.com/blog/1306111 在Controller中使用AOP的问题主要在于如何让Controller能够被检测到. Controller和其 ...

  9. 让IE8一下兼容CSS3选择器

    来自英国的网页开发工程师Keith Clark 开发了一个JavaScript方案来使IE支持CSS3选择器.该脚本支持从IE5到IE8的各个版本. 首先,您需要下载DOMAssistant脚本和ie ...

  10. 成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'minimatch'

    成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'minimatch' 解决办法 npm i ...