之前的文章中已经说过怎么进行发布,但没有写怎么回滚,那么这篇文章会介绍两种回滚方式。
?
第一种,使用gogs做源代码管理,java项目的栗子如下:
为来更好的理解我下面的操作,先看流程图,这是一个线上生产的一个发布过程
1.1 先选择一个mavn项目
1.2 配置如下:
1.2.1 设置构建历史保留数量(general => 丢弃旧的构建),我设置为保留最近30个,防止磁盘空间被撑爆
?
1.2.2 设置参数化构建过程
其中选项参数是下拉框的,字符参数是文本框
1.2.3 设置源码管理
Repository URL为项目仓库url
Credentials为下载这个仓库的账号密码
Branch Specifier 为分支
?
1.2.4 设置构建前的脚本,注意是做build前的pre steps中执行的shell脚本,该脚本是确认是否回滚,如果回滚的话调用回滚命令
case $Status in Rollback) echo "-----本次操作为回滚,版本号为$Version-----" git reset --hard $Version echo "-----回滚完成,打包中-----" ;; *) exit ;; esac
?
1.2.5 设置build,mavn构建时依赖该配置文件,该配置文件为java项目中的配置
1.2.6,jenkins服务器构建好后再调用一个python脚本去执行负载均衡的关闭,不需要的可以不调用
1.2.7 设置post steps,上传构建的java文件至程序服务器,并执行命令重启java项目
1.2.8 关闭负载均衡
?
1.3?发布界面如下:
?
commit_id从gogs获取?
如果是github就是下图这个
第二种,使用gogs做源代码管理,java项目的栗子如下:
为来更好的理解我下面的操作,先看流程图,这是一个线上生产的一个发布过程,该方法会比较耗磁盘存储,因为要备份
2.1?先选择一个mavn项目
2.2.1配置如下:
?
?
?
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
?