我先描述问题:
公司有一个项目,每天都在更新开发.
因为项目太大了.所以,我们采用的是,把新改动的某个java文件编译后,直接放到生产环境的包内,重启.
我是第一次接触这种形式.说是增量部署.但是我很困惑,这样难道不会造成本地线上的差异么?
我经常会遇到,我本地没事,线上有问题的情况.
每次要记住自己改了哪几个文件,增加了哪些接口...然后编译对应的文件,添加进去.
这样不就无法保证一致性了么?
增量部署要细化到这么小的粒度么?精确到java文件?
我一直以为增量部署最少也是某一个功能模块级别的,可以独立打包的模块.
在这家公司之前,我只接触过全量部署.
所以不了解具体增量部署是怎么个部署法.总觉得我们做的不太对,但是又说不上哪里不对.
额,百度上查过这个问题,所以引用就不要引用了.
想听听各位大佬自己组织语言通俗解释下.
哪些高大全的说法有些看不明白.万分感谢.
做一个工具,增量更新的时候记录上次更新时所用的代码svn版本,之后更新的时候对比跟最后一次版本的差异,拿出差异文件,然后上传编译热更,手动去一个个上传修改容易出错或者漏
在实际工作中,全量部署包一般都比较大,并且容易受到本地环境和线上环境不同的影响,和全量部署比起来,增量部署速度较快风险较小,即使出错也可以及时撤回,缺点就是步骤繁琐,并且可能会出现本地和线上版本不一致的问题,第一个问题的话,你在部署之前,可以在部署包中附加一个部署说明把你涉及到改动的文件列一个清单,这样可以减少出错的概率。第二个问题,由于本地和线上环境的差异,是很难做到版本完全一致的,所以尽可能保证线上版本不出错,需要改哪个模块,就改哪个模块,只需要保证当前改动的模块和文件版本一致就行了,在每次部署之前,先把之前的部署包备份一下,如果出错再即使撤回,这是我个人的一些见解