zoukankan      html  css  js  c++  java
  • jenkins --备份回滚

    场景一:打标签实现回滚

    背景介绍:

    本项目代码存储在gitlab,再通过jenkins发布到对应的节点上。
    使用tag控制版本:每一次成功的构建,jenkins会自动为gitlab的分支打上tag,版本更新可直接选择production分支,当需要回滚时选择对应的tag进行构建。

    jenkins主要配置

    tag的参数化构建


    Name: 此参数的变量名,可在之后配置以 $tags 形式引用;

    Description: 描述信息,对此变量进行说明;
    Parameter Type:抓取数据的类型,此处选择分支或tag,因为需要使用分支develop,使用tag rollback;
    Branch Filter: 需要保留的分支名称,只对此处的分支进行展示,因为我们版本更新时只使用此分支。S
    Tag Filter: 支持正则匹配,此处*为匹配所有;
    Sort Mode: 排序方式;
    Quick Filter: 勾选后,会在tag旁多一个可供filter的输入框;
    list size: tag展示框一次可展示的tag数量。

    构建成功打tag


    如上图,勾选上仅在构建成功后打tag
    Tag to push: 变量${BUILD_NUMBER}为系统自带变量,是构建编号,第11次构建即为11
    Target remote name:这个名称在配置git拉代码的地方添加

    源代码配置

    由于以上配置,此处需要注意的是$tags变量与Target remote name的配置

    效果展示

    场景二:构建后生成压缩包,解压实现备份回滚

    背景介绍

    每个版本的代码push到gitlab的master后,将通过jenkins编译发布(build),并自动打包当前版本代码。回滚时解压对应版本压缩包并发布。

    jenkins主要配置


    定义type变量:build / rollback
    若rollback,则自行填写rollback_number 变量

    shell脚本

    save_backnumber=5  #需要保留的备份包个数
    PROJECT_NAME=${JOB_NAME#*_}
    
    #先定义各种方法
    function  backup   #新建该项目备份目录,打包当前版本代码
    {
        if [ ! -d "/var/lib/jenkins/common/${JOB_NAME}" ]; then mkdir -p /var/lib/jenkins/common/${JOB_NAME};fi
        echo -e "33[1;34m  backup tar  33[0m"
        tar -zvcf /var/lib/jenkins/common/${JOB_NAME}/${PROJECT_NAME}_${BUILD_NUMBER}.tar.gz  -C ${WORKSPACE}/ .  --exclude=.git || exit 2
    }
    
    function  deleteoldtar  #保留设定个数的备份包,多余的都删除
    {
        backend_number=`find /var/lib/jenkins/common/${JOB_NAME}/ -name "*.tar.gz" |wc -l`
        delete_number=$((${backend_number}-${save_backnumber}))
    
        if [[ ${backend_number} > ${save_backnumber} ]]
        then
          echo -e "33[1;34m  delete old tar  33[0m"
          ls -lt /var/lib/jenkins/common/${JOB_NAME}/*|tail -n $delete_number|awk '{print $NF}'|xargs rm -rf {} || exit 2
        fi
    }
    
    function  rollback  #解压需要回滚的备份包
    {
        rollback_tarname=${PROJECT_NAME}_${rollback_number}.tar.gz
        echo -e "33[1;34m  start rollback  ${rollback_tarname} 33[0m"
        tar -xvf /var/lib/jenkins/common/${JOB_NAME}/${rollback_tarname} -C ${WORKSPACE}/ || exit 2
    }
    
    case $type in
      Deploy)    #若type变量为Deploy,则执行backup、deleteoldta两个方法
        backup
        deleteoldtar
        ;;
      RollBACK)
        rollback  #若type变量为RollBACK,则执行rollback方法
        ;;
      *)
        exit
        ;;
    esac
    

    构建的效果为

  • 相关阅读:
    绕口令系列 1
    毕业论文排版
    使用matlab表示“段数不确定”的分段函数
    [转]C/C++关于全局变量和局部变量初始化与不初始化的区别
    [转]基于Protel DXP软件的PCB高级编辑技巧大全
    冒泡排序及其优化
    gcc编译器参数
    [转]跟我一起写Makefile系列
    实例说明optimize table在优化mysql时很重要
    log4php0.9的详细配备实例说明
  • 原文地址:https://www.cnblogs.com/huandada/p/11041899.html
Copyright © 2011-2022 走看看