偶尔发现,代码部署是一件很有意思的事情。需要耐着性子去整理修改过的代码,修改过的功能,然后放在一个版本文件中。这让人觉得很棒,从这一排排版本文件中,你可以随意的查看某个时间段、或某个版本发生了哪些变化,数据结构、代码逻辑、产品功能?
从一枚攻城狮的角度来说,发现问题,追溯源头,永远是一件乐此不疲的事情。通过严谨的版本化方式去部署,可以很轻易的定位问题所在。
然而然而,这版本化的过程比较枯燥而乏味,我也知道能坚持多久 ~~
概述
通过大家的不断努力,新系统正式上线了。
虽然…但是上线并不意味结束,相反阶梯状的 project 仍在继续,所以往后的系统更新已经成为日后需要谨慎对待的事情之一。
资源
SVN:公司在软件工程上还是非常上心的,SVN 设置的非常贴心。
服务器:测试、正式
数据库:测试、正式
人员配置:测试人员、开发技术员
可选方式
- eclipse 打 war 包进行部署
- 本地编译后部署
吐槽
war 包部署,简单直接又粗暴。
不需要花费过多的时间,只要在部署前记得修改数据库配置文件即可。
但是…对于包含文件上传等功能的系统,就略为麻烦些。必须手动把服务器上的上传文件进行备份,等新的 war 包被解压缩后,再手动拷贝到相应目录下。这个步骤略显繁琐,但又不得不做,除非另有上传文件的服务器…
本地编译后部署,就要麻烦些。
首先,需要本地 Tomcat 运行通过。然后再把 webapps 下编译好的工程,拷贝到服务器上进行发布。
采用方式
其实我想使用最终方式这个词,但是想想还有进步完善的空间。
- 大原则
功能先发布测试环境,经测试人员反复测试,开发技术员反复修改完善之后,再发布到正式环境。 - 版本号
设置版本号1.1.0作为初版,往后每一版(部署测试/正式环境时的版本)都必须有版本号。
版本号可以自定义。大规模修改.部分新功能调整.小功能调整。 - SVN
没有代码版本控制的技术公司请自觉面壁
每次确定发版前,检查所有在发版范围内的 SVN 提交,并整理 SVN 备注用于生成版本更新说明。
整理代码,将修改过的代码整理到版本文件夹中(保留原有路径)。
整理 sql,将数据库调整转化为 sql 语句,并在该版本文件夹下建立README.txt文件用于记录 sql 语句。 - 完成版本
- 版本文件夹,以
日期+版本号命名。 - 版本文件夹下,需要有该版本所修改的(保留路径的)工程文件。即直接拷贝覆盖服务器上的工程即可。
- 版本文件夹下,需要有
README.txt。记录版本号、sql 语句、对内的修改备注(例如:改了哪个类的哪个方法)、对外的版本说明(例如:增加了某个功能)。 - 上传 SVN
- 版本文件夹,以
- 部署
- 停止 Tomcat
- 从版本文件夹下的
README.txt中拷贝 sql 语句,修改测试数据库的数据结构。 - 从版本文件夹下直接拷贝工程文件夹(仅包含本次修改的代码文件),覆盖到服务器的工程文件夹。
- 启动 Tomcat
- 打开浏览器登录确认
- 通知新版本发布成功,并提供修改的功能列表给测试人员。
结束语
漫漫人生路,让我们且行且珍惜。