在公司已经2年了,伴随着公司的成长,我手上的项目也日益增加起来,做了个小经理,带着十来个小弟,发展速度不快不慢,可是最近有点hold不住,到处寻求方法解决一些项目管理的问题,比如文档管理工具,BUG追踪工具,更完善的代码管理方案什么的...也接触过一下大公司的前辈,貌似他们好一部分是有自己公司开发的解决方案,不是完全开放性的.
这里我主要讲一下代码吧,我怕个别网友无法理解我所描述的情况,所以我用最详细的术语来讲一下问题是怎么产生的,我是怎么一一解决的,直到哪里不好决定了
假如我手上有项目1,其实当初是这么做的,在外网服务器上创建SVN,然后检出到本地,这里我本地称它为 项目1_online
然后会再创建一个 项目1 的内网SVN,本地再检出,当 项目1 的功能阶段开发完毕后,测试OK,再将这段时间内的变更文件导到 项目1_online 上,然后提交 项目1_online 的文件到线上,就看到线上的变化了,一旦线上有问题,马上回滚 项目1_online .顺利的话就这样了,继续接收产品需求开发 项目1,过程中如果online发现BUG,则在online上修改代码,本地建立online的vhost测试OK再提交上线.然后这份修正代码再merge到项目1里面以使得开发主干也被修复,这是单个项目的管理情况
后来加了项目2,它不是我们公司主要的经营项目,比如它只是一个很微型的小程序,基本上是一次性开发完成就可以,以后很少需求要去改变它或者升级的,并且由某个熟练的小弟专门负责维护它. 他开发完成后打了个zip包给我上线,于是我对付它的办法是:直接将它上传到外网服务器,解压文件改好数据库配置,建立vhost,DNS神马的... 过了几个月,确实有点修改了,他给了我一个zip升级包,解压即可,于是我又手动上传这个zip再解压...
项目3来了,这个我觉得要建SVN,于是在外网建了它的SVN,本地检出一份.然后也像项目1一样,本地还有个 项目3,而线上的当然也叫 项目3_online,开发模式和项目1一样.如此这般,项目4,5,6,7,8....它们也陆续来了,一次又一次地配SVN,authz,passwd,挺麻烦的哦,也并非所有人都要参与到所有项目中,有的专人负责,有的几个人负责,有的全部负责.那么问题来了:这样要维护好多SVN项目感觉好麻烦. 能不能有更好的办法去管理这些东西?我能不能轻易地添加一个项目到项目列表中,然后生成代码管理地址给大家检出,可视化分配权限--拖拖选选勾勾即可而不用一次次VIM去改?因为每次为新项目配置SVN感觉麻烦,一些小项目都懒得添加了,后来又造成那些项目的更新方法不太爽,或者撤回出现的BUG又麻烦,还是迫不得已去给它配了~
换一个思路,其实一个SVN对应一个项目是很原始的土方法了,不如变一变,一个SVN下多个项目就好了,根目录下每个子目录就是一个项目,每个项目里都有trunk,tags,branches这些,然后autz分配好权限,哪个项目是哪些人参与,那么我要新建目录就只要创建文件夹并添加到版本库即可.只是权限分配方面还是要去linux编辑文件吧~然而这样有一个缺点就是当个别项目并非部署在同一台外网服务器上时不也是要再开另一台远程服务器的SVN?对于咱们小公司来说,十来个项目两三台外网服务器,忍耐一下还是能hold住的,但大公司几百几千个项目的话不带这样玩的吧!
我到处找了找方案,发现有个持续集成管理软件的概念,昨天我安装了Jenkins试了一下,它能定时将我输入的一个版本库代码检出来并记下日志.到这里我只见到它能为我做定时更新而已.然后继续看着教程做下去,追加了一个free-style的节点是after第一个项目build之后来执行的,它是执行一些批量命令的.这些命令里好像就是应该编写单元测试的脚本和代码上线的脚本.至少这时候我已经意识到如果能写自己的命令的话,意味着我可以用这些命令自定义操作,比如将这个项目发布到指定的服务器上.它支持bat和shell命令,虽然我主要在windows下工作但不会bat,但这些当然是能学习一下就能搞定的事情.(另外很多关于Jenkins的教程都是拿JAVA项目做例子的,没有拿PHP做完整例子的,再者那个Ant我也不会,不知道它能不能构建php项目!)
到这里为止我好像初步找到了一个答案,当我怀揣着这个答案问一些前辈的时候他们都说太高大上了吧,都是一个个SVN或者其它方案处理的.那么难道大部分公司都不用这样的东西吗,是不是太过复杂,规模不大都不去使用它了?我怕我犯二所以专门来问一下
然而我是这么设想的,假如使用了持续集成软件,我们的项目将会是这样一个开发运作方式:
我在Jenkins上建立 项目1 节点,每天中午12点开始集成一次,里面配上phpunit的测试脚本(其实我还不怎么熟悉这个,但相信不难掌握,已经看了几章并实践了),这样一旦测试不通过的话我们会收到邮件,就知道这些代码因为某次的提交出现BUG了,这个嘛我相信是用SVN所不能取代的好处,当然也要安排人员认真写好一个个重要的测试用例了,把核心功能测好了,别让它不小心被牵连出BUG.然后构建完毕后发布到内网测试服务器上.其中假设所建立的项目节点是来自 svn://192.168.1.100/project1/trunk 的,我们就是基于这个主干来进行开发,但由于还没熟悉Jenkins(说了这么多次,其实大家可以将它视为一个代名词,反正就是你们所用的管理软件,有类似功能吧?),其实我也不知道它发布到内网服务器上是怎样的.是不是和我们SVN那个一模一样的文件结构,我还得花多几天学习才知道
假设是一模一样的文件结构,那么至少可以找出A和B两个构建点之间的差异文件作为补丁打包上线.打好包后丢到项目1_online上提交就好了,如果有问题就更新到指定版本实现功能撤消(但如果涉及大规模的表结构改动可不是是撤代码那么简单,尽量把开发任务切细来,避免撤代码时数据库结构都难以恢复吧!?我是这样一个理念来做的,然而我也知道并非永远都能这么顺风顺心,总有那么一天,所上的功能涉及表结构大改但出BUG后恢复表结构会变得非常麻烦,这个目前极少可能出现的情况就先不找大家讨教方案啦).
这是我对未来应用了持续集成软件的假想,不知道各位前辈在公司拥有多项目下是怎么处理这些问题的,你们的方案到底方便不方便,有没有什么更优秀的管理办法.能不能尽量满足我的需求:
1.方便增删改以及汇总日志
2.方便更新/撤回
3.方便权限分配(权限这个好像听说Git更方便,但暂时没精力学它,摸了三章而已)
4.方便及早发现BUG,因为偶尔会因为开发了第55个功能,测试时大概感觉没问题,但上线后不起眼的11号功能却被它牵连出BUG了~
5.方便部署到不同的外网服务器上
我只是在大胆试想使用各种方案后的情况会是"多么好",如果我哪里想错了,希望大家指正,分享下你的经验吧,百度上各种文章描述的都是概念,几乎没有人用实际的一个工作流程来描述解决问题的步骤,可能是本人太笨无法理解
回复讨论(解决方案)
如果服务器环境都一样,要配置好 一个,其他直接复制就可以了(jenkins自动部署,服务器监控)
大型团队推荐 GIT 版本库
Gitblit 我用的是这个GIT版本库,JAVA的WEB网页式管理,可以满足你的要求
下面这个是我整理的,并且在使用中的一些项目管理集成自动化监控用到的一些工具!
http://blog.csdn.net/fenglailea/article/details/40506245
LNMPS:
LINUX+Nginx+Mysql+PHP+Sphinx
作者:风来了.呆狐狸
1.标准化
工具
代码(规范、格式等等)
文档
人员
等等标准化,统一使用一种格式
2.工具
js框架:Jquery 统一jquery版本
JQuery上传插件:uploadify
JQuery表单验证:Validform
弹出层:artDialog
日期时间插件:My97 DatePicker
富文本编辑器:百度编辑器UEditor
前端整合框架:bootstrap (我们主要用于后台)
PHP版本:php5.6.x (opencache正式服务器、正式服务器测试环境开启)
数据库版本:MariaDB 10.0.x(mysql分支)
缓存: memcache
PHP开发工具:phpStorm
PHP调试工具:Xdebug 和 手工调试
数据库管理工具:Navicat Premium
文件代码对比工具:BCompare
文本编辑器:Notepad++
浏览器:chrome
数据库建模
流程图
本地开发环境WIN:upupw套件(全部更换于正式环境一样)
开发服务器环境 :lanmps套件 项目统一测试环境和正式环境一样, 开启错误日志显示
正式服务器测试环境 :lanmps套件 项目在发布到正式环境前,最后一次测试,关闭错误日志显示
下面3个 我们还在人工范围
代码检查
压力测试
自动化测试
3.搜索
mysql sql like搜索满足不了项目需要,所以这里 使用 sphinx-for-chinese
sphinx (中文的 一般使用coreseek 或sphinx-for-chinese)
4.版本库
GIT 开源,免费分布式版本控制系统,适合中大型团队开发 (我们使用的)
SVN 开放源码的版本控制系统
5.自动化部署
jenkins 配合 SVN或GIT 使用,配置自动化部署,备份,恢复
6.服务器监控通知
监控工具(Nagios,监控宝等等)
通告工具(百度通告平台)
监控、通告工具介绍:http://blog.csdn.net/sylcc_/article/details/40475097
7.项目管理(测试用例、缺陷安排、日程安排等等)
jira :项目于事务跟踪工具 ,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
confluence: 可以配合jira使用,类似 于博客文档工具
禅道项目管理 :集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程
我们使用的是 禅道
8.其他因素
本类就属于幻想了,
在合理范围内自由化工作时间
工作环境舒适(自己设计配置自己工作环境)
可以遥望远方
多绿色
多美女
多活动(不定期组织活动.年头到年末一直开发实在太枯燥)
哈哈,特别希望像 谷歌苹果那类的公司
谢谢,不过没多少收获...我要的是jenkins的具体信息~初步通过其它渠道了解到了,它并不是用来管理代码,而是将一些重复的工作自动化
Git取代SVN的话,估计我这里的小团队不太合适,而且上司有点抗拒更换SVN这个念头

PHP 로깅은 웹 애플리케이션을 모니터링하고 디버깅하고 중요한 이벤트, 오류 및 런타임 동작을 캡처하는 데 필수적입니다. 시스템 성능에 대한 귀중한 통찰력을 제공하고 문제를 식별하며 더 빠른 문제 해결을 지원합니다.

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

Alipay PHP ...

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

뜨거운 주제



