线上发版

前面的一般都这样,搞一个dev分支,dev分支测试完成后,在不同的环境中测试,测试通过后, 加入到master分支测试,稳定后发布到线上。

可能有一些线上bug紧急处理的支线会直接进master

更新代码 如果有运维,可以运维写脚本处理

1.将线上的配置文件取出来,做一个文件包A

2.脚本执行的部分:

2.1git拖取 master分支(测试完成的分支)到线上

2.2将文件包A覆盖线上环境文件,这是文件权限等等

2.3刷新redis缓存等一些操作。

2.4清除一些.git等一些隐藏文件等等

2.5将发版信息,发送邮件,或者发送slack聊天工具等等,告知开发组等等

2.6回滚操作,如果某些步骤执行失败,那么前面执行成功的步骤,如果需要执行回滚操作的,需要执行回滚操作。

没有运维,自己也可以用shell写一下,不难,一个git命令,一个cp命令, 缓存可以手动刷新

3.简单的方式:

3.1因为本地和线上会有一些文件不一样,将这些不一样的文件不放到git里面,单独ftp上传,这种方式会存在一样的时间差

3.2除了一些数据库配置等万年不变的文件,不放到git里面,其他都放到git里面,然后在 线上做一个文件夹,里面是线上和本地开发不同的文件

让存在线上文件和本地文件不一致的时候,就可以将线上的文件,按照文件路径添加进去, 然后写一个shell文件,先git pull分支内容,然后执行cp命令,进行文件复制, 譬如:git pull xxxxxxxx && \cp -rf xxxxx ,另外还有redis刷新缓存等等,一系列发版需要操作的事情都写到这个shell文件里面,具体发版的版本,通过参数的方式传递到 这个shell文件里面的变量中。

3.3如果是多个php,更有必要写命令行,执行命令行发版,如果有运维,可以做一些操作界面的发版工具。

相关的一些讨论:http://www.fecshop.com/topic/1529