关于如何做版本发布
问题:
最近的项目经常需要做版本发布,但是版本发布老是出现问题,问题如下:
比如,新手小接了一个新需求,一个功能开发完了,在本地环境和测试环境都测试通过了,
把版本更新包提交到运维或者一线开发手上,
发布到线上,
通知开发,测试人员进行功能更新的确认;
如果确认ok,更新结束;
如果确认不ok,进入下面的循环;
while(线上测试确认结果不OK)
{
//温习下开发的功能的流程
//在出错的代码行前后加上日志
//部署到线上
//测试确认?OK:NO;
if(OK) break;
else {
//查看日志
//重新进入循环
}
}
总之,相当的繁琐;
思考: 这是一个版本发布不规范引起的问题,问题的根源在哪呢?
在下认为,原因有2;
- 本地环境,测试环境,生成环境的代码(除了数据库配置文件,缓存配置文件),存在差异;
- 相关的错误信息没有放到容易查看的位置,出现问题无法直观明显的看出问题,从问题中的加日志可以看出,这是一种很低效率的方法;
解决方案:
针对这种现象和产生这种问题的原因,解决方案非常简单;
1,首先是代码错误信息的整理,最好是在数据库中弄一张或者若干张日志表,当程序发生错误或者异常,或者功能逻辑错误的时候,把相关的判断结论和异常信息,数据进行存库,如果出现问题,可以快速的找到产生问题的原因,和依据;
这点非常重要,可以大大减轻开发人员成为救火队长的压力,把相关的权限在后台开发给业务人员,让他们自己去协调解决问题;
2,版本控制工具的使用,比如svn, 首先,在本地弄一个功能完全覆盖的测试,通过之后把源码分别发布到测试环境,正式环境(数据库配置文件,缓存配置文件除外),打出一个分支来作为一个主分支;
后续的功能开发,在这个主分支上复制出一个来进行开发,开发完成,测试环境测试完之后,合并到主分支上去,通过文件比较,找出更新的文件列表;
把这些文件整理,更新到线上,进行版本发布;
3,更新的一个好习惯;
首先有一个主目录, 名称是 站点域名或者应用名_时间_开发人员_需求名称
然后里面是3个目录,作用分别是:
序号 | 目录名或者文件名 | 作用 |
1 | bak | 备份目录,里面分为all(全部备份),sub(部分备份) |
2 | program | 按照程序的部分备份目录,进行部分文件的替换 |
3 | sql | 需求需要sql脚本 |
4 | readme.txt | 更新的说明,文件列表,验证方法 |
这些文件准备好之后,进行两次对比;
一个是全部备份跟本地源码或者运行包的对比,这可以找出是否有文件遗漏的情况出现;
第二个是部分备份跟program的更新文件进行对比,查看修改的地方,再次进行确认;
如果对比都没有问题,直接把program目录整个覆盖到线上的程序目录;
最后是按照确认步骤,让测试和开发人员进行确认;
如果没问题,则更新完毕;
这样做下来,一般都不会出现版本更新的问题;
若有想法,欢迎交流;卡特 505847426