公司一直没有一个完善的部署流程,基本都是通过上线打包以后SSH手动拖拽部署项目。
当然网上也有现成的持续集成工具,比如jenkins。Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1、持续的软件版本发布/测试项目。 2、监控外部调用执行的工作。
尽管jenkins有很丰富的功能。然而,暂时并没用使用倒它,这是后话,以后再谈。
上图,是一个生产环境上线的一个基本流程图。当然,这里忽略了测试环境的流程。
一、开发人员提交代码到SVN项目分支
二、SVN服务器执行代码检出功能,并使用rsync同步至生产环境服务器A(线上测试环境)
三、服务器A使用ANT以及shell脚本执行打包、备份、部署、重启操作
四、线上测试环境进行UI功能的测试
五、测试无误,服务器A使用rsync推送代码至线上集群服务器B和服务器C(事先备份)
六、测试人员进行简单的测试即可
注意完善使用说明
- 步骤二中,其实可以用到svn的钩子功能,但是目前使用的脚本手动执行,同步代码库到生产环境。
- 还有所谓的线上测试环境,是为了真实模拟生产环境,部署以及测试不至于影响正式环境,测试无误后再同步代码。
- 基本解决的问题,脚本化部署,虽然有少量人工参与,但是免去了以前部署人员对照目录,拖拽的问题(少部署,漏部署,集群下复制,参数漏改的问题),最主要的还是TM网速问题。
- 由于增加了线上测试环境,避免了部分功能回滚麻烦的问题。