改版前测试及改进
改版前测试及改进
一、需求引入
之前写的一篇文章:【内网后台同步到线上(番外篇)https://www.cnblogs.com/windysai/p/14797641.html】,介绍过,后台构成除了后台代码外,还有软连接链到资源目录上(一个git项目)
实际上这个图的流程我要补充下,内网能登陆一个类似cms的后台,运营的人编辑完文章后需要点击一个叫“生成静态页”的按钮,然后才会得到一篇样式完好的html文章,然后就是更新到线上,nginx代理这个资源目录,域名拼接就能看了。
最近来了个新需求,这个项目需要改版。既要保留上图这种旧版文章样式,也要新建一个新版样式,然后挂到线上去。相当于在线多做一个新版网站环境,给中心确认,等中心确认完成后把原来的官网改掉(就是旧版样式)。但未确认好之前,需要新版旧版网站同时存在一段时间。我经理给我抛出一个问题:版面不同如何同时在两个环境同步内容?
二、需求初步实现
当时我经理问我有没有什么问题需要注意,然后我傻傻地回了句:另一个环境不跟原环境混一起就好 = =,当场想升天,因为我误解了整个需求。以为线上多做一个后台+资源目录的环境就可以了。然而我们经理说,这样会导致运营的人要在新旧两个环境发两次文章,不可取!
最后决定在后台和资源目录都多做一个分支,叫new,用于改版。
大致实现思路(这是我们经理给的流程,感觉有坑):
1、发文章的原线路保持不变(master分支)
2、运营发完文章通知我,然后运营的人自此之后,不能再操作这条发文线路了。轮到我手动把后台分支切到new分支,资源目录也是,然后我登录new分支的后台链接,定义点击一次“生成静态化”(据说编辑完文章,点了之后,样式就会给到资源目录的文章上了
3、然后new分支的资源目录同步到线上,我确认过新样式的文章传上去后,注意,域名2看到的跟域名1看到的样式是不同的,域名2看到的是改版新样式的文章;域名1是旧样式。
4、最后,我把公司内网服务器的后台和资源目录都从new分支改回到master分支,通知运营,可以重新发文章
不断重复这4个过程。。。。
先说说坑,我们经理竟然说后台代码不需要拷贝一份给新版测试用,只需要git checkout 到new分支,资源也是切换到new分支即可。我感觉不太对劲。就我之前跟前端讨论过,他需要我开个winscp的连接,让他扔改好的代码进去后台程序的,如果不单独拷多一份,如何保证他丢过去的代码是最新改过的呢。不单独复制一份,结果就是导致master的代码被覆盖,即使假设开发是从自己本地电脑把新版代码直接传gitlab的new分支上,我从服务器拉取,也需要git pull 去更新。。。
目前就我能测试的,就是丢一个文件到new分支,同步到线上,域名2拼接文件能看到,域名1看不到(指向master分支)。过程是拷贝一个后台,资源目录则不需要,因为开发不需要改这里的代码,手动切好new分支应该就可以了(开发还没有时间跟我联调,都是我猜测的,不过应该合理。。。坐等联调
后来第二天有空,干脆在另一台服务器做多一个后台及资源目录,写死指向new分支,即上图在同一台服务器上需要git checkout分支这条线路不要。
1、公司内网服务器A:后台目录(master分支)-》资源目录(master分支)-》gitlab同步到线上云服务器C资源目录(master分支)-》域名A访问 2、公司内网服务器B:后台目录(new分支)-》资源目录(new分支)-》gitlab同步到线上线上云服务器D资源目录(new分支)-》域名B访问
由于改版时间定在7月18日后,所以为了保证这两个分支一致同步内容,需要new分支内容定时从master分支更新。不然会出现域名A看到的内容,域名B看不到(资源目录控制的),如下:
图1:域名B(new分支)缺了7月7日之后的新闻
域名A(master分支)
解决方法
参考:https://blog.csdn.net/DeMonliuhui/article/details/78510678
资源目录,先在本地建一个b分支,关联远程master分支
1、git checkout -b b origin/master
2、pull远程master分支内容
3、返回到new分支,合并b分支内容
最终脚本如下:cat merge-master.sh
#!/bin/bash
cd 资源目录
#1、切换到b分支 git checkout b #2、拉master分支代码到b上 git pull origin master #3、返回到分支new git checkout new #4、将master分支内容合并分支到new git merge b #5、push到远程new分支 sh -x /home/用户/scripts/gdtc_status.sh
过一会,域名B就能看到跟域名A一样的新闻内容