小团队持续集成之实践【1】 - 概述以及服务整合
概述
俗话说,工欲善其事必先利其器,在团队开始之初,好的工具能很好的提升效率,而在日常开发中,离不开以下工具:
- 项目管理 (跟踪里程碑、版本、需求等等)
- 版本管理
- 持续集成
- 文件共享
- 其他(诸如自动化测试、WIKI知识库等等)
在这份系列文章里,将会详细介绍小团队的协作服务器的搭建,以及持续集成的一些经验。
所有服务都采用开源、免费的方案,并且通过Docker等技术,来降低团队使用、维护成本。
:blush: 当然有米的话,可以选择atlassian公司的整套解决方案,在我给公司搭建的整套服务的时候(2015年),以及现在写这篇文章的时候,它家的大部分产品或者服务,都是要收费的,当然也有免费的,例如:bitbucket small teams(5 users)
如果团队是开源项目类型,建议使用:Github、Travis CI等,这样可以把成本控制到最低。
同时,这里有一份Github官方推荐工具列表: integrations
一些体会和经验
在团队混沌之初,项目管理、发版、版本管理等总是非常混乱,常出现经理说了个事,最后开发都没听到,或者一个月之后忘了;而开发手工发版,这个版本改了什么?谁知道呢?结果一个未知的玩意跑去测试那边,测试也很受伤,到项目就要上马,测试压力大,只能像和尚念经一样天天围着开发转。经历过太多坑之后,决心要痛改前非。
- 统一账户认证
在企业的日常运转中,通常都会使用非常多的协助软件,诸如:OA、ERP、VCS(版本控制系统)、项目管理系统等等,这些都是需要进行身份验证的,最简单、低成本的做法就是使用账户和密码登录,但在很多企业里面,这些系统通常都是不连通的,导致一个系统一个账号,用户到头来,都忘了自己的账号和密码。
因此,一号通行所有的系统,是巨大的优势,在搭建的所有服务当中,我们将使用统一的账号认证,一个账号即可访问所有的服务。
- 项目管理系统
项目管理系统的好处不言而喻,它可以让我们的开发更有节奏,效率更高、更有条理。
- 版本管理系统
这个是标配了,没有版本管理系统,如何干活?
- 持续集成服务
持续集成的好处实在太多,很多文章都有介绍,抛开管理流程上的来说,在版本构建过程中很多重复劳动工作,也是可以交给持续集成系统来完成的,诸如多渠道打包、OEM/ODM版本构建等等。
- 其他
还包括WIKI、私有云盘、代码质量管理平台等等。这些可以根据团队自身需求来决定是否部署。
服务的整合
一旦部署那么多服务,无形中给团队添加了许多学习成本,但我们文章开篇说了,好的工具是提升效率的,因此,这些服务需要整合在一起,降低使用者的学习成本和难度。在很多实践当中,版本管理和持续集成是最容易也是最需要整合在一起的,通常达到的效果就是:开发者只需要提交代码或者合并分支,就会自动完成以下流程:
- 拉取代码,产生修改日志
- 静态扫描代码,产生初期的代码质量报表
- 构建
- 存档
- 进行集成测试
- 通知相关人员
因此,在实践当中,我采用下图中的流程来达到上述目的:
dept_flow.jpg上图中的流程也包含了各个服务,以及服务的目的。