转载

【Jenkins系列四】、jenkins发布和回滚

之前的文章中已经说过怎么进行发布,但没有写怎么回滚,那么这篇文章会介绍两种回滚方式。

  1. 通过git来回滚
  2. 通过发布时备份,回滚时选定备份文件进行回滚

?

第一种,使用gogs做源代码管理,java项目的栗子如下:

为来更好的理解我下面的操作,先看流程图,这是一个线上生产的一个发布过程

【Jenkins系列四】、jenkins发布和回滚

1.1 先选择一个mavn项目

【Jenkins系列四】、jenkins发布和回滚

1.2 配置如下:

1.2.1 设置构建历史保留数量(general => 丢弃旧的构建),我设置为保留最近30个,防止磁盘空间被撑爆

? 【Jenkins系列四】、jenkins发布和回滚

1.2.2 设置参数化构建过程

其中选项参数是下拉框的,字符参数是文本框

【Jenkins系列四】、jenkins发布和回滚

1.2.3 设置源码管理

Repository URL为项目仓库url

Credentials为下载这个仓库的账号密码

Branch Specifier 为分支

? 【Jenkins系列四】、jenkins发布和回滚

1.2.4 设置构建前的脚本,注意是做build前的pre steps中执行的shell脚本,该脚本是确认是否回滚,如果回滚的话调用回滚命令

case $Status  in
  Rollback)
    echo "-----本次操作为回滚,版本号为$Version-----"
    git reset --hard $Version
    echo "-----回滚完成,打包中-----"   
    ;;
  *)
  exit
      ;;
esac

? 【Jenkins系列四】、jenkins发布和回滚

1.2.5 设置build,mavn构建时依赖该配置文件,该配置文件为java项目中的配置

【Jenkins系列四】、jenkins发布和回滚

1.2.6,jenkins服务器构建好后再调用一个python脚本去执行负载均衡的关闭,不需要的可以不调用

【Jenkins系列四】、jenkins发布和回滚

1.2.7 设置post steps,上传构建的java文件至程序服务器,并执行命令重启java项目

【Jenkins系列四】、jenkins发布和回滚

1.2.8 关闭负载均衡

? 【Jenkins系列四】、jenkins发布和回滚

1.3?发布界面如下:

【Jenkins系列四】、jenkins发布和回滚 ?

commit_id从gogs获取?

【Jenkins系列四】、jenkins发布和回滚

如果是github就是下图这个

【Jenkins系列四】、jenkins发布和回滚

第二种,使用gogs做源代码管理,java项目的栗子如下:

为来更好的理解我下面的操作,先看流程图,这是一个线上生产的一个发布过程,该方法会比较耗磁盘存储,因为要备份

【Jenkins系列四】、jenkins发布和回滚

2.1?先选择一个mavn项目

【Jenkins系列四】、jenkins发布和回滚

2.2.1配置如下:

【Jenkins系列四】、jenkins发布和回滚 ?

【Jenkins系列四】、jenkins发布和回滚 ?

【Jenkins系列四】、jenkins发布和回滚 ?

case $Status  in
  Deploy)
    echo "-----发布前进行打包备份-----"
    echo "Status:$Status"
    path="${WORKSPACE}/bak"
    if [ -d $path ];
    then
        echo "The files is already  exists "
    else
        mkdir -p  $path
    fi
    cd ${WORKSPACE}
    tar czf bak/${JOB_NAME}-${BUILD_NUMBER}.tar.gz * --exclude=bak
    find $path  -mtime 1 -name "*.tar.gz"  -exec rm -rf {} /;
    echo "Completin!"
    ;;
  *)
  exit
      ;;
esac

?

cd /usr/src/app/oto_saas_bank_pay_dev
pwd
ls -l
echo "Status:$Status"
echo "Version:$Version"

case $Status  in
 Deploy)
      echo "-----发布-----"      
      ;;
  Rollback)
      echo "-----回滚-----"  
      appfile=oto_saas_bank_pay-1.1.2-SNAPSHOT.jar 
      cd bak
      tar -zxvf ${JOB_NAME}-$Version.tar.gz 
      cd ..
      rm -rf target/$appfile 
      mv bak/target/$appfile target/$appfile 
      ;;
  *)
  exit
      ;;
esac

supervisorctl status
supervisorctl reread
supervisorctl update
supervisorctl restart  oto_saas_bank_pay_dev
supervisorctl status

?

原文  http://www.cocoachina.com/articles/30491
正文到此结束
Loading...