CI/CD版本回滚Jenkins解决方案
一、创建项目
填写项目名,关系到项目路径对应请谨慎命名
二、项目配置
1.配置字符串参数和选项参数
2.代码仓库配置
3.构建环境
4.构筑脚本配置
5.点击左下方的保存或者应用
三、使用方法
1.发布回退流程
2.查看历史发布信息
四、基础脚本(会自动对应到所在项目或项目文件夹):
1 TmpDir=${WORKSPACE}
2 Date=$(date "+%Y%m%d-%H%M%S")
3 LogFile=/var/log/deploy/"$Status"_$(date "+%Y%m%d").log
4
5 case $Status in
6 Deploy)
7 path="/bak$TmpDir/$Time" #创建每次要备份的目录
8 if [ -d $path ];
9 then
10 echo "The files is already exists " >> $LogFile
11 else
12 mkdir -p $path
13 chmod 777 $path
14 fi
15 \cp -rf $TmpDir/* $path #将打包好的文件备份到相应目录,覆盖已存在的目标
16 echo "$Date Completing! Project:${WORKSPACE} Status:$Status Version: $Time BuildNum:${BUILD_NUMBER}" >> $LogFile
17 ;;
18 Rollback)
19 cd /bak$TmpDir/$Time #进入备份目录
20 \cp -rf * $TmpDir/ #将备份拷贝到程序打包目录中,并覆盖之前的包
21 echo "$Date Completing! Project:${WORKSPACE} Status:$Status Version:$Time BuildNum:${BUILD_NUMBER}" >> $LogFile
22 ;;
23 *)
24 exit
25 ;;
26 esac
27
28 ReservedNum=30 #保留文件数
29 FileDir="/bak$TmpDir/"
30
31 cd $FileDir #进入备份目录
32 FileNum=$(ls -l | grep '^d' | wc -l) #当前有几个文件夹,即几个备份
33
34 while(( $FileNum > $ReservedNum))
35 do
36 OldFile=$(ls -rt | head -1) #获取最旧的那个备份文件夹
37 echo $date "$Date Delete File:"$OldFile >> $LogFile
38 rm -rf $FileDir/$OldFile
39 let "FileNum--"
40 done
41
42 # 下面放具体项目发布脚本指令(即由ci服务器分发到线上服务)
五、相关须知:
*ci 回退备份文件目录 /bak/var/lib/jenkins/workspace/xxx项目名/
需要时可手动查找相关版本项目文件,目前脚本内只保留单项目或目录30份备份文件,可根据需要更改脚本内参数30为既定量
*ci 发布回退日志文件目录 /var/log/deploy/ 会记录当天的发布和回退情况
示例:
20201012-165752 Completing! Project:/var/lib/jenkins/workspace/test-ci-backend Status:Deploy Version: 2020101224 BuildNum:84
20201012-164711 Completing! Project:/var/lib/jenkins/workspace/test-ci-backend Status:Rollback Version:2020101221 BuildNum:83
对应了秒级项目发布时间,项目所在位置即哪个项目,发布回退状态,发布和回退时填写时间版本号,发布的序号对应jenkins序号
CI/CD版本回滚Jenkins解决方案的更多相关文章
- 失去焦点布局在ios12-微信6.7.0版本以上不回滚的解决方案
微信页面input获取焦点,布局上移,失去焦点布局在ios12-微信6.7.0版本以上不回滚的解决方案: setTimeout(function(){ let scrollHeight = docum ...
- svn 日志版本回滚
[root@v01 online]# svn diff -r 9:8 Index: index.html =============================================== ...
- nginx之热部署,以及版本回滚
热部署的概念:当从老版本替换为新版本的nginx的时候,如果不热部署的话,会需要取消nginx服务并重启服务才能替换成功,这样的话会使正在访问的用户在断开连接,所以为了不影响用户的体验,且需要版本升级 ...
- 用Helm部署Kubernetes应用,支持多环境部署与版本回滚
1 前言 Helm是优秀的基于Kubernetes的包管理器.利用Helm,可以快速安装常用的Kubernetes应用,可以针对同一个应用快速部署多套环境,还可以实现运维人员与开发人员的职责分离.现在 ...
- Nginx 版本回滚
目录 参考信息 源码安装 nginx-1.14.2 版本升级 nginx-1.16.1 版本回滚 ①.对于软件的版本升级.添加官方模块.添加第三方模块,都需要用源码安装包重新生成(configure) ...
- TortoiseSVN 版本回滚
尝试用TortoiseSVN进行版本回滚,回滚到的版本和实际的内容有出入,可能是点了太多次给点乱了,囧~ 不过发现一个比较靠谱的方法,如下: 右键点击文件TortoiseSVN->showlog ...
- git---远程仓库版本回滚
开发中,发现有错误版本提交带远程分支master,怎么处理? 1 简介 最近在使用git时遇到了远程分支需要版本回滚的情况,于是做了一下研究,写下这篇博客. 2 问题 如果提交了一个错误的版本,怎么回 ...
- SVN系列之—-SVN版本回滚的办法
例:SVN版本为:TortoiseSVN 1.9.7 一.SVN简介 subversion(简称svn)是一种跨平台的集中式版本控制工具,支持linux和windows. 版本控制解决了:*代码管理混 ...
- SVN版本回滚实战
天在使用SVN发布的时候不小心修改了一些不正确的东西,新增和编辑了一些错误的文件,由于文件数量比较多,并且目录复杂,不可能单个进行处理,所以想到了SVN版本回滚. 回滚本地工作目录: 1.右键工作目录 ...
随机推荐
- Git Best Practice All In One
Git Best Practice All In One git workflow 本地开发环境: 开发人员自测的,可以是自己本地部署的静态服务器,当然也可类似是运行 npm server类似的环境, ...
- macOS & timer & stop watch
macOS & timer & stop watch https://matthewpalmer.net/blog/2018/09/28/top-free-countdown-time ...
- how to change svg polygon size by update it's points in js
how to change svg polygon size by update it's points in js matrixTransform https://stackoverflow.com ...
- js in depth: arrow function & prototype & this & constructor
js in depth: arrow function & prototype & this & constructor https://developer.mozilla.o ...
- c++ 使用进程id获取打开的网络端口
#pragma warning( disable : 4996) #include <winsock2.h> #include <ws2tcpip.h> #include &l ...
- Renice INC:解密干型葡萄酒
市场上,干型葡萄酒往往对比甜型葡萄酒(如甜红.甜白)受到更多葡萄酒爱好者的青睐.在葡萄酒界,大部分的红葡萄酒和白葡萄酒也都是干型的,而且它们的口感往往各有特色,并非千篇一律.今天,就跟随Renice ...
- python的with用法(转载)
原文地址:https://www.cnblogs.com/wanglei-xiaoshitou1/p/9238275.html 一.with语句是什么? 有一些任务,可能事先需要设置,事后做清理工作. ...
- Example之selectOneByExample方法和selectByExample的使用
selectOneByExample示例如下: Example userExample = new Example(User.class);userExample.createCriteria().a ...
- WPF -- DataTemplate与ControlTemplate结合使用
如深入浅出WPF中的描述,DataTemplate为数据的外衣,ControlTemplate为控件的外衣.ControlTemplate控制控件的样式,DataTemplate控制数据显示的样式,D ...
- Python基础语法函数
函数是什么 Python中的函数与数学中的函数不同,它不再只是公式,而是实实在在有着自己特定功能的代码.其实在潜移默化中我们已经有所接触了. 比如print()函数,range()函数,type()函 ...