背景
1.测试人员不太懂技术,测试时nginx配置容易出错。
2.开发人员在同个项目开发不同分支,每个人开发进度不一致,测试时每次只能测一个小功能点。
3.每次测完之后的版本需要保留,出了问题能够定位到是哪个版本开始出现的。
4.开发人员需要一个工具,能够自动化部署测试应用。
流程
首先由开发人员配置前后端项目信息,在完成发布后,配置对应的版本信息(包括nginx路由配置及版本号),版本配置完成后,由测试人员切换到响应版本进行测试。
搭建环境要求
linux+mysql+redis+openresty+tomcat+maven
前端部署
配置前端信息
图中可以看到一些必要的配置信息:项目名称 git地址 git分支
通过shell脚本从git上拉取前端代码并生成一个新的目录(项目名称)放置前端的代码(webpack打包压缩等在本地执行)新建前端项目
1234mkdir ${项目名称} &&cd ${项目名称} &&git clone ${git地址} &&cd `ls ${项目名称}` && git checkout ${git分支}更新前端代码
1cd /data/front/${项目名称}/`ls /data/front/${项目名称}` && git pull
后端部署
定制tomcat模板
下载tomcat解压后修改tomcat的server.xml配置
在几个端口配置的位置预留用于替换占位符tomcat启动参数也可以在catalina.sh中按自己需求去定制下
然后像配置前端项目一样,我们先填写一些必要的信息 tomcat端口信息以及一些其他的自定义信息。
然后就开始部署一个后端项目
建立项目目录 -> 拷贝tomcat模板到该目录下 -> git上拉代码到代码目录 -> 使用maven编译生成war包 -> 将war解压到当前项目下tomcat的webapp目录 -> 运行tomcat启动脚本下面是本人写的一段丑陋的脚本
|
|
基于上述脚本可以完成后端项目的创建更新及重新编译启动
前后端组合版本
基于nginx配置
在后台配置好nginx路由规则后 生成nginx配置文件 替换原有的配置后reload nginx即可
免配置版本切换
将host绑定到nginx所在的机器后执行版本切换操作
点击切换版本后将操作人的IP及切换的版本号写入redis中,openresty中配置如下脚本将请求路由到该版本对应的前后端项目
|
|
这里主要就是一个 openresty+lua 的玩法
最后通过web界面将这些流程串起来就是一个兼发布及AB测试于一体的系统了
最后
本文主要提供一个实现思路,抛个转。基于此思路继续延展可以做的事还很多,比如通过一些运维技术如ansible可以实现远程部署,基于openresty接入自己的业务系统又可以完成灰度任务。如果讲的有什么不会的地方欢迎大家指正。有什么问题也可以加我QQ一起讨论。