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 ...
随机推荐
- 列举两种不同类型的Java标识注释,并解释它们之间的区别。
列举两种不同类型的Java标识注释,并解释它们之间的区别.
- Fresco,Glide,Picasso
1.Picasso和Glide的with后面的参数不同 Picasso.with(这里只能传入上下文) . Glide.with,后面可以传入上下文,Application实例,Activit ...
- SFTP远程连接服务器上传下载文件-vs2010项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,vs2010 vs2010项目实例下载地址:CSDN下载 如果没有CSDN积分,百度网盘下载(密码 ...
- centos系统下安装python3以及pip3
首先查看一下系统当前的python版本 python -V 1.安装必要工具 yum-utils 它的功能是管理repository及扩展包的工具yum install yum-utils -y 2. ...
- 【MongoDB】 Failed to connect to 127.0.0.1:27017, reason: Connection refused
由于项目需要,在一台虚拟机上安装了MongoDB,但是在启动的时候,出现如下错误: [root@localhost bin]# ./mongo MongoDB shell version v3.4.0 ...
- thinkphp提示不支持mysqli或者mysql
确认php是否安装了php-mysql组件,nginx或apache的php服务进程
- Linux命令之top、ulimit、free
1.[ulimit命令] ulimit命令用来限制系统用户对shell资源的访问. 假设有这样一种情况,当一台 Linux 主机上同时登陆了 10 个人,在系统资源无限制的情况下,这 10 个用户同时 ...
- Django 笔记(四)模板标签 ~ 自定义过滤器
模板标签: 标签在渲染的过程中提供任意的逻辑 语法: 由{% ... %} 和 {% end... %} 常用标签: with:类似取别名 模版继承: Django模版引擎中最强大也是最复杂的部分就是 ...
- atop工具检测linux硬件异常
引言 Linux以其稳定性,越来越多地被用作服务器的操作系统(当然,有人会较真地说一句:Linux只是操作系统内核:).但使用了Linux作为底层的操作系统,是否我们就能保证我们的服务做到7*24地稳 ...
- numpy函数:[1]shape用法
shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入参数可以使一个整数表示维度,也可以是一个矩阵.