1
wintersun 2014-09-19 10:49:48 +08:00 1
不太明白这个增量包是个什么东东? 一堆更新了的java class?jsp?
但是SVN是有branch特性的。一般的做法是:基于当前的Trunk版本,可以为将来某天发布、具备某些特性、修复某些bug创建一个branch(其实就是另一个代码库),程序员对这个branch的代码进行更新,测试人员也基于这个branch进行测试。达到要求后,使用branch中的代码进行编译、全新发布;发布成功,将branch中的变更merge回Trunk,Trunk继续成为下一个branch的基线代码库。 merge这个动作都是基于源代码的,而且都要求哪个程序员改动的,哪个就负责merge回Trunk库,遇到多个程序员修改同一部分代码,要求他们内部协调,一般都不会有太大的代码冲突。 如果你的增量包就是我理解的那样,的确工作量大而且容易出错,配置管理形同虚设!请牢记:配置管理应该主要基于源代码(不是绝对,但应该是绝大多数),而非编译后的目标文件。 |
2
hcymk2 2014-09-19 10:57:26 +08:00 1
|
3
qping OP @wintersun 诚如你所说,增量包包含 class jsp js还有其他资源文件,可以直接更新到服务器上。
我的理解你看对不对:你说的流程感觉更像产品开发阶段,我处的项目更多的是维护和一些新增需求,要求是尽快的能够更新到现场,而且项目整包是1G(就不要吐槽项目的优化了,因为历史原因,个人感觉这个项目1 2年后就要被推翻了),整包发布不现实 |
5
davepkxxx 2014-09-19 11:14:19 +08:00 1
maven配合jenkins
|
7
wintersun 2014-09-19 14:03:55 +08:00
@qping maven配合jenkins估计也解决不了你的问题。
我觉得你需要的是一个程序(Ant?Java?Python?)来帮你处理编译后文件的更新问题,大致流程如下: 1、下载和解压目标WAR文件到某个文件夹,这个WAR文件也就是你已经发布到产品服务器上的那个,本质都是zip格式,你懂的 2、查找文件更新:给定一个日期(上次发布的日期?),通过该日期比对源文件的最后更新日期(SVN?本地?),决定是否将该源文件对应的class文件或jsp、js等复制到目标WAR文件夹(假定已经完成编译和其他资源处理) 3、重新压缩WAR文件夹为WAR文件 4、你最好还是基于Branch来,否则在Trunk中有些不必要的文件更新也会纳入进来 —————————————————————分割线—————————————————— 说回Maven+Jenkins,我理解你们的处境,别说1G,就算是几十兆的包我都容忍不了,呵呵。 我采取的办法是在生产环境(不一定是服务器,可以是自己的机器或者客户方提供的部署用的机器),使用楼上提到的Maven+Jenkins(当时还叫Hudson),SVN不在生产环境本地都没有关系,只要能联网更新,进行编译、打包,最终的war包要么自动发布上去,要么手工ftp上去,要么U盘copy上去…… 第一次会比较慢,因为要更新所有的源代码并编译,还要下载jar包…… 当然,你可以预先把一个本地的Maven Repository复制到Jenkins服务器上! 总之,不要人工去更新那些war包。 如果你们没有用Maven,用Ant也是可以的,如果你们连Ant都没有用,那就从Maven开始重构吧! |