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.右键工作目录 ...
随机推荐
- svn conflict & svn cleanup
svn conflict & svn cleanup OK $ svn --help $ svn cleanup Tree Conflicts https://tortoisesvn.net/ ...
- Contributor License Agreement
Contributor License Agreement CLA https://cla.js.foundation/lodash/lodash?pullRequest=4756 https://g ...
- taro & Error: spawn taro ENOENT
taro & Error: spawn taro ENOENT https://stackoverflow.com/questions/27688804/how-do-i-debug-erro ...
- Object to Array
Object to Array objectToArray(obj = {}, title = `标题`){ let datas = []; if(Object.keys(obj).length) { ...
- web testing
web testing cypress https://www.cypress.io/ https://github.com/cypress-io/cypress https://docs.cypre ...
- 「NGK每日快讯」2021.2.1日NGK公链第90期官方快讯!
- NGK的去中心化自治实践,更人性化的DAO
2020年,DeFi市场市场火爆的同时,引爆了流动性挖矿的市场.行业内对DAO的思考也在源源不断进行,特别项目治理通证发行之前,DAO的去中心化的治理理念,是区块链属性中的重要的一环,也已引发了不同项 ...
- 京东数科二面:常见的 IO 模型有哪些?Java 中的 BIO、NIO、AIO 有啥区别?
IO 模型这块确实挺难理解的,需要太多计算机底层知识.写这篇文章用了挺久,就非常希望能把我所知道的讲出来吧!希望朋友们能有收货!为了写这篇文章,还翻看了一下<UNIX 网络编程>这本书,太 ...
- 微信小程序:利用map方法方便获得对象数组中的特定属性值们
- Oracle check TBS usage
select d.tablespace_name, space||'M' "SUM_SPACE(M")", blocks "SUM_BLOCKS", ...