整个软件项目分为四个环境 开发本地环境、开发环境、测试环境、IDC环境。和传统C++开发不同的模式是多了第一个开发本地环境。这是为何呢,由于目前大部分开发人员仍是比较熟悉windows下开发。对于mac和linux下直接使用软件而且开发的中国开发者仍是少之又少,这套架构就这个现状作出来的。以下是环境搭建架构图:css
从环境来讲:html
1、开发本地环境、开发集成服务器搭建。 前端开发者、后台开发者。前端
前端开发用的最多的是photoshop和dreamweaver。在作psd以前大部分是不会协同开发的,只有整个文件传递过来过去。html切割的时候可能就会多我的协同开发了。这个时候须要一个集中ftp服务器、svn服务器。svn服务器用于保存版本代码库,用于保存历史修改的版本和开发人员协同。ftp服务器适用于及时修改时保存上传到预览服务器进行预览。看到这里有人也许会问,我直接合并svn和ftp不行吗?其实有这样的问题,若是直接提交svn,后台开发人员就会从svn看到。原本是前端的集成协同开发预览,结果影响到后台容易引发版本混乱。java
后台开发怎么搭建环境?用eclipse在本地环境搭建开发环境,经过tomcat插件或者jetty启动调试class、jsp。以前看过不少公司都经过打成war包发布到集成环境再调试。集成环境你们都去集成容易引发版本混乱。即便不发布到集成环境,在本地就算修改个小的class文件也要重启war包有点浪费时间。最好就是利用tomcat的热部署,修改小功能直接生效。如今咱们就是这样作的,用maven管理jar包依赖,ant本地打包、拷贝包,用eclipse的tomcat插件热部署快速开发。等到全部功能开发好了。把分支版本发布到开发环境进行集成测试。mysql
开发环境涉及的软件有:nexus 、maven、tomcat服务器、mysql、ftp、jenkins、svn、jira、fisheye、eclipse、dreamweaver、photoshop、nginx。linux
软件的做用:
nexus做为集中仓库管理,由于每一个工程若是都有一堆jar包,很难管理。加上svn上传、分支、合并耗费网络带宽、空间。若是有个地方把这些浪费空间的jar集中管理起来,全部工程合用岂不是很好。
maven是软件生命周期、依赖管理,有了集中管理jar包,就须要有个东西把jar包仓库和工程链接起来。
tomcat服务器是本地开发使用和集中测试服务器。
mysql就不必每一个开发机器都装一个了,放在一个开发环境就能够。
ftp做为前端开发上传文件使用。
jenkins是持续集成,开发和前端都把代码弄好,怎么融合集成在一块儿测试呢,总须要有我的来把全部的文件合并在一块儿吧?这个软件就起到这个角色,把全部文件集成、编译、打包、发布到tomcat服务器。以下图:nginx
svn代码版本管理,你们都知道协同做用。
jira用于需求、bug等管理。
fisheye用于代码统计、审核等。
eclipse、dreamweaver、photoshop不用说啦。
nginx主要用于作虚拟主机和静态资源管理。由于咱们可能同时开发多个网站,nginx能够根据不一样的域名转发到不一样的web服务器。web
2、测试服务器。开发、测试。sql
开发集成测试环境经过后,这个就能够转测试了。经过持续集成,测试部署好环境就开始测试。测试环境一样依赖于集中仓库、maven、持续集成等软件。也就是集成测试环境、开发集成环境、开发本地环境都是用的一套jar包,是否是很cool。若是测试不经过,就要转回开发,开发好再转测试。怎么保证开发的质量和测试的质量,还有你们的协做性,这个过程涉及到软件工程和绩效考核,后面再说。测试经过一些测试,测试经过后就能够发布到外网了。这个时候须要提供发布列表、操做步骤、数据库操做脚本给到运维审核,审核经过后才能发布。数据库
怎么发布到外网IDC呢?运维能够根据发布列表去操做,开发和前端一块儿等着熬夜啊熬夜。没有效率!这里提出了一个增量发布版本的方式,经过发布列表,咱们的发布程序会自动检测到发布的文件和发布的机器,发布到对应的服务器。若是发布失败了还能够回滚文件,基本上是一键操做。将来还会把服务器重启、日志输出等集成起来。
3、IDC服务器。
外网的真实服务器,后台和前台。你们可以访问到的网站服务器。业务人员在版本发布后查看。整个流程就作好了。你们在每一次版本开发完了,能够很好的协同、开发、测试、发布。
扩展话题:
一、photoshop可否和html互转而且有版本管理功能,这个作好是个革命性的标志。
二、css、js等静态文件是否也可以归入自动依赖管理里。这样不用咱们发布一个页面文件时发现还有些依赖的js没有发布。
原创文章,转载请注明: 转载自LANCEYAN.COM
本文连接地址: JAVA敏捷开发环境搭建