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.右键工作目录 ...
随机推荐
- how to convert Map to Object in js
how to convert Map to Object in js Map to Object just using the ES6 ways Object.fromEntries const lo ...
- how to stop MongoDB from the command line
how to stop MongoDB from the command line stop mongod https://docs.mongodb.com/manual/tutorial/manag ...
- taro 三端开发
taro 三端开发 wx 小程序, alipay 小程序,H5 https://taro-docs.jd.com/taro/docs/GETTING-STARTED.html#h5 https://t ...
- js destructuring assignment bug
js destructuring assignment bug https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Op ...
- Dart 编写Api弃用警告
例如body2在以后的版本将被bodyText1代替 @Deprecated( 'This is the term used in the 2014 version of material desig ...
- html转png
/*海报弹窗2018-3-14*/.diglogimg{position: fixed;top:0;left:0;z-index: 99;width: 100%;height: 100%;backgr ...
- 死磕Spring之IoC篇 - 深入了解Spring IoC(面试题)
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1. ...
- POJ1852-换向思考
蚂蚁碰撞后反向与穿越的时间一样. 穷竭搜索---->想象力 #include<stdio.h> int main(void){ int n,len,ansNum,mintime,ma ...
- nginx+php-fpm docker镜像合二为一
一.概述 在上一篇文章介绍了nginx+php-fpm,链接如下: https://www.cnblogs.com/xiao987334176/p/12918413.html nginx和php-fp ...
- Docker 搭建nexus私服
一.概述 有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:Apache基金会的Archiva.JFrog的Artifactory和Sonatype的Nexus.而Nexus是当前最流行的M ...