jenkins 实现测试发布、预发布、真实发布、回滚发布
主要思路:
1、做三个文件夹,用于放置不可随意修改的配置文件(测试发布、预发布、真实发布)
2、每次都先修改配置文件再进行构建(构建时会先把配置文件复制到构建的目录,再同步到发布的目录)
3、发布完代码后,创建备份目录并复制代码到备份目录进行备份
4、使用脚本需要传执行类型和构建ID
shell脚本如下:
#!/bin/sh echo "$1" model=$ echo "${model}" version=$ project_MainDir="/data/www/vhosts/git_track/ods" project_ConfigDir="${project_MainDir}/config" project_srcDir="${project_MainDir}/src" project_BuildDir="${project_MainDir}/builds" project_ExcludeFile="${project_MainDir}/shell/exclude.txt" project_DeployDir="/data/www/vhosts/ods.wondershare.cn/httpdocs" project_PreDir="/data/www/vhosts/test-ods.wondershare.cn/httpdocs" rsync_Passwd="/usr/local/rsync/etc/rsyncd206.passwd" case $model in deploy_Test) echo "deploy_model: ${model}" echo "version: ${version}" #复制配置文件 yes | cp -f ${project_ConfigDir}/test/application/database.php ${project_srcDir}/test/application/ yes | cp -f ${project_ConfigDir}/test/application/config.php ${project_srcDir}/test/application/ #同步代码到发布目录 /usr/local/rsync/bin/rsync -zavP --exclude-from=${project_ExcludeFile} --delete ${project_srcDir}/test/ ${project_DeployDir} chown -R apache.users ${project_DeployDir} #创建备份目录 mkdir ${project_BuildDir}/T${version} #把代码复制到备份目录 cp -r ${project_srcDir}/test/* ${project_BuildDir}/T${version}/ ;; deploy_Pre) echo "deploy_model: ${model}" echo "version: ${version}" yes | cp -f ${project_ConfigDir}/pre/application/database.php ${project_srcDir}/release/application/ yes | cp -f ${project_ConfigDir}/pre/application/config.php ${project_srcDir}/release/application/ /usr/local/rsync/bin/rsync -zrltDvP --exclude-from=${project_ExcludeFile} --delete --password-file=${rsync_Passwd} ${project_srcDir}/release/ apache@192.168.10.206::apache${project_PreDir}/ mkdir ${project_BuildDir}/P${version} cp -r ${project_srcDir}/release/* ${project_BuildDir}/P${version}/ ;; deploy_Real) echo "deploy_model: ${model}" echo "version: ${version}" yes | cp -f ${project_ConfigDir}/real/application/database.php ${project_srcDir}/release/application/ yes | cp -f ${project_ConfigDir}/real/application/config.php ${project_srcDir}/release/application/ /usr/local/rsync/bin/rsync -zrltDvP --exclude-from=${project_ExcludeFile} --delete --password-file=${rsync_Passwd} ${project_srcDir}/release/ apache@192.168.10.206::apache${project_DeployDir}/ mkdir ${project_BuildDir}/R${version} cp -r ${project_srcDir}/release/* ${project_BuildDir}/R${version}/ ;; rollback_Pre) echo "rollback_model: ${model}" echo "version: ${version}" #echo "/usr/local/rsync/bin/rsync -zrltDvP --exclude-from=${project_ExcludeFile} --delete --password-file=${rsync_Passwd} ${project_BuildDir}/P${version}/ apache@192.168.10.206::apache${project_DeployDir}/${project_PreDir}/" > /test.txt /usr/local/rsync/bin/rsync -zrltDvP --exclude-from=${project_ExcludeFile} --delete --password-file=${rsync_Passwd} ${project_BuildDir}/P${version}/ apache@192.168.10.206::apache${project_PreDir}/ ;; rollback_Real) echo "rollback_model: ${model}" echo "version: ${version}" /usr/local/rsync/bin/rsync -zrltDvP --exclude-from=${project_ExcludeFile} --delete --password-file=${rsync_Passwd} ${project_BuildDir}/R${version}/ apache@192.168.10.206::apache${project_DeployDir}/ ;; *) exit ;; esac
1、测试发布
2、预发布:
2、真实发布:
3、回滚发布:
case $deploy_evn in Rollback_Pre) url="$pre_version" ;; Rollback_Real) url="$real_version" ;; *) exit ;; esac model="$deploy_evn" projectName=`echo "$url"|awk -F '/' '{print $6}'` rollbackID=`echo "$url"|awk -F '/' '{print $7}'` /bin/sh /usr/local/rsync/woshrs/hrs.sh $model $rollbackID
jenkins 实现测试发布、预发布、真实发布、回滚发布的更多相关文章
- k8s deployment 金丝雀发布 更新的 暂停 恢复 回滚
假设现在有业务需求,计划将所有的nginx 从镜像版本1.14更新到1.15,这一次发布不紧需要平滑发布,还需要 金丝雀发布,及确认其中一个Pod没有问题后在进行剩余的更新. 暂停与恢复也可以使用ym ...
- Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法
上面虽然实现了项目的自动部署,但是有时部署失败的时候我们需要回滚到指定版本的构建,这样才能更灵活的进行项目的构建部署.我们可以选择“参数化的构建过程”进行传递不同的参数来选择是进行新的构建还是回滚 如 ...
- jenkins 回滚发布
#jenkins拉取文件路径 workspace=/data/wos/testtemp #备份路径 backspace=/data/wos/back #不能提Git的文件 config=/data/w ...
- 2、jenkins+svn自动发布和回滚
Jenkins配置回滚思路: 目前只能实现使用salt来管控配置文件的管控,配置文件的版本回滚需要后续定制化开发,或者进行格外其他的管理操作.后续实现 以下配置可以为每个项目备份构建文件到本地指定路径 ...
- Jenkins实用发布与回滚PHP项目生产实践
目录 1.概述 2.项目实践 2.1.环境说明 2.2.Jenkins配置 2.2.1.修改Jenkins的运行用户 2.2.2.配置Jenkins用户和Gitlab的ssh-key 2.2.3.Je ...
- Jenkins发布回滚方案
Jenkins回滚可以通过每次发布从主干打tag,然后发布的时候发tag,比如tag, v1, v2,v3 如果我发布了v3,想要回滚回v2,直接在Jenkins中选择v2的tag地址重新构建就可以回 ...
- docker swarm实现java项目的发布/滚动更新/回滚/镜像管理
使用docker swarm滚动更新java项目,部署集群,这一切的前提是使用Jenkins+maven进行项目打包,分发等功能 具体可以参考我的另外三篇文章 https://www.cnblogs. ...
- Jenkins实现生产环境部署文件的回滚操作(Windows)
由于dotnet项目的生产环境环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具. 既然有回滚操作,那么就会有部署操作:要实现回滚,先要实现部署的操作,我在jenkins搭建了一 ...
- 9.2 k8s结合Jenkins与gitlab实现代码升级与回滚
1.部署Jenkins 1.1 安装jdk # apt 安装jdk11 apt install openjdk-11-jdk # 查看 root@jenkins:~# java -version op ...
随机推荐
- SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...
- 识别oracle数据库软件版本号
由于Oracle数据库不断发展并可能需要维护,因此Oracle会定期生成新版本.并非所有客户最初都订阅新版本或需要对其现有版本进行特定维护.因此,该产品的多个版本同时存在. 可能需要多达五个数字才能完 ...
- python下载mp4 同步和异步下载支持断点续下
Range 用于请求头中,指定第一个字节的位置和最后一个字节的位置,一般格式: Range:(unit=first byte pos)-[last byte pos] Range 头部的格式有以下几种 ...
- 结构数组新发现之直接初始化《leetcode-合并区间》
leetcode有时候会要求一些奇怪(陌生)的数据形式,刷题因为数据形式卡住了真的很不好... 合并区间里定义了一个Interval的结构数组 struct Interval { int start; ...
- Python3学习笔记01-环境安装和运行环境
最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...
- MySQL之路 ——2、步履维艰的建表
1.首先,在windows下,不区分大小写.Linux下可能要区分,具体参考下面文章 mysql表名忽略大小写问题记录 2.用command line client 每句以分号结尾. 3.Navica ...
- Markdown中Latex 数学公式基本语法
原文地址:http://blog.csdn.net/u014630987/article/details/70156489 Markdown中Latex 数学公式基本语法 公式排版 分为两种排版: - ...
- Unity3D RTS游戏中帧同步实现
帧同步技术是早期RTS游戏常用的一种同步技术,本篇文章要给大家介绍的是RTX游戏中帧同步实现,帧同步是一种前后端数据同步的方式,一般应用于对实时性要求很高的网络游戏,想要了解更多帧同步的知识,继续往下 ...
- cryptsetup文件系统加密
今天做了SYC攻防题的文件系统挂载部分,在找到挂载最内层的final文件时发现mount无法识别,这也许就是一个加密的文件系统吧,还好-在龟速的 网络环境下查阅到了losetup循环挂载系统命令,但是 ...
- 001_获取nginx证书
一. 以下命令可以获取nginx域名的证书 openssl s_client -showcerts -connect www.jyall.com:443 < /dev/null 2>&am ...