持续集成(Continuous integration)数据库
提出服务器
集成软件的过程不是新问题,若是项目开发的规模比较小,好比一我的的项目,若是它对外部系统的依赖很小,那么软件集成不是问题,可是随着软件项目复杂度的增长(即便增长一我的),就会对集成和确保软件组件可以在一块儿工做提出了更多的要求-要早集成,常集成。早集成,频繁的集成帮助项目在早期发现项目风险和质量问题,若是到后期才发现这些问题,解决问题代价很大,颇有可能致使项目延期或者项目失败。测试
定义spa
大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员常常集成他们的工做,一般每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程能够大大减小集成的问题,让团队可以更快的开发内聚的软件。版本控制
价值开发
减小风险部署
一天中进行屡次的集成,并作了相应的测试,这样有利于检查缺陷,了解软件的健康情况,减小假定。产品
减小重复过程自动化
减小重复的过程能够节省时间、费用和工做量。提及来简单,作起来难。这些浪费时间的重复劳动可能在咱们的项目活动的任何一个环节发生,包括代码编译、数据库集成、测试、审查、部署及反馈。经过自动化的持续集成能够将这些重复的动做都变成自动化的,无需太多人工干预,让人们的时间更多的投入到动脑筋的、更高价值的事情上。io
任什么时候间、任何地点生成可部署的软件
持续集成可让您在任什么时候间发布能够部署的软件。从外界来看,这是持续集成最明显的好处,咱们能够对改进软件品质和减小风险提及来口若悬河,但对于客户来讲,能够部署的软件产品是最实际的资产。利用持续集成,您能够常常对源代码进行一些小改动,并将这些改动和其余的代码进行集成。若是出现问题,项目成员立刻就会被通知到,问题会第一时间被修复。不采用持续集成的状况下,这些问题有可能到交付前的集成测试的时候才发现,有可能会致使延迟发布产品,而在急于修复这些缺陷的时候又有可能引入新的缺陷,最终可能致使项目失败。
加强项目的可见性
持续集成让咱们可以注意到趋势并进行有效的决策。若是没有真实或最新的数据提供支持,项目就会遇到麻烦,每一个人都会提出他最好的猜想。一般,项目成员经过手工收集这些信息,增长了负担,也很耗时。持续集成能够带来两点积极效果:
(1)有效决策:持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统能够报告功能完成度和缺陷率。
(2)注意到趋势:因为常常集成,咱们能够看到一些趋势,如构建成功或失败、整体品质以及其它的项目信息。
创建团队对开发产品的信心
持续集成能够创建开发团队对开发产品的信心,由于他们清楚的知道每一次构建的结果,他们知道他们对软件的改动形成了哪些影响,结果怎么样。
要素
1.统一的代码库
2.自动构建
3.自动测试
4.每一个人天天都要向代码库主干提交代码
5.每次代码递交后都会在持续集成服务器上触发一次构建
6.保证快速构建
7.模拟生产环境的自动测试
8.每一个人均可以很容易的获取最新可执行的应用程序
9.每一个人都清楚正在发生的情况
10.自动化的部署
原则
1. 全部的开发人员须要在本地机器上作本地构建,而后再提交的版本控制库中,从而确保他们的变动不会致使持续集成失败。
2. 开发人员天天至少向版本控制库中提交一次代码。
3. 开发人员天天至少须要从版本控制库中更新一次代码到本地机器。
4. 须要有专门的集成服务器来执行集成构建,天天要执行屡次构建。
5. 每次构建都要100%经过。
6. 每次构建均可以生成可发布的产品。
7. 修复失败的构建是优先级最高的事情。