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. wampserver2.2 在window2003下的安装的主要问题

    准备安装最新的wampserver 2.2c,   1.安装问题,安装完成后总是无法启动服务   系统事件中提示错误 找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有 ...

  2. Delphi 触发异常的方法

  3. 31、NTP时间服务器

    1.NTP简介 NTP服务器顾名思义就是时间同步服务器(Network Time Protocol),Linux下的ntp服务器配置相对来说都比较容易,但在Linux下有一个弊端,不同时区或者说是时间 ...

  4. c++字符串的输入

    先声明一下字符串的初始化:当初始赋值的时候一定是反斜杠0(\0)有三种方式“”,{‘\0’}."\0"(如果是已经赋值的我们可以采用memset(recvbuf, '\0', si ...

  5. ros 封ip,域名,端口,重定向

    1.封IP / ip firewall filter add chain=forward dst-address=192.168.0.1(想要封的IP) action=drop comment=&qu ...

  6. 10.Go-goroutine,waitgroup,互斥锁,channel和select

    10.1.goroutine goroutine的使用 //Learn_Go/main.go package main import ( "fmt" "time" ...

  7. python继承小demo

    # -*- coding: utf-8 -*- """ 继承的意义:实现代码重用,数据函数都可以重用 子类覆盖,子类与父类同名 选择性继承 super().__init_ ...

  8. TCP/IP网络编程系列之一(初级)

    概述 网络编程实际上就是编写程序使两台联网的计算机相互的交换数据.操作系统会提供名为“ 套接字 ”的部件.套接字是网络数据传输的软件设备,即使对网络数据传输原理不太熟悉也无关紧要.我们也能通过套接字完 ...

  9. 【Wince-DataTable填充ListView】DataTable的数据填充到ListView控件,适用.Net2.0

    在开发WinCE6.0程序的时候,要把DataTable的数据显示到ListView控件上,无法使用绑定, 只能使用循环遍历. 思路:外循环遍历行,内循环遍历列 //DataTable:dt2 //L ...

  10. java实现大文件上传

    文件上传是最古老的互联网操作之一,20多年来几乎没有怎么变化,还是操作麻烦.缺乏交互.用户体验差. 一.前端代码 英国程序员Remy Sharp总结了这些新的接口 ,本文在他的基础之上,讨论在前端采用 ...