什么是持续集成

发表时间:2017-07-18 21:42:22 浏览量( 43 ) 留言数( 0 )

学习目标:

1、理解为什么需要持续集成

2、了解持续集成需要完成的工作


学习过程:

一、为什么需要持续集成

    讨论为什么需要持续集成,先思考一下我们每天面对的问题时什么?就知道我们为什么需要持续集成了。

    1、每次系统有代码更新,我们就需要更新到生产环境中,那么我们需要怎么做呢?编译、发布、测试等等,这些工作都是非常没有技术含量,如果需要频繁更新发布这回浪费技术人员很多时间。我们就不能吧这些机械的操作就使用一个简单的按钮就帮我们完整了吗?或者半夜让系统自动发布不久可以了吗?

    2、因为有些团队成员不想常常发布,所以他写的代码长时间没有提交和更新了,导致主线的代码和开发的代码差异很大了。我们需要倡导持续集成所有的代码,最好就是每一天都提交和更新代码。这样就能快速的发现问题。并能及时的修改。

    3、我们在发布项目的时候怎么知道代码有没有错误呢。尤其时在修改了代码后,我们是否需要做回归测试,如果所有的回归测试都由人工测试,那也会烦死人的。所有持续的自动化的测试也是非常必要的。

    4、在发布项目时候,由于项目比较多了,一个底层的包需要更新到库里面,但是你也不知道那个项目用到这个包,或者多个项目需要同时发布,发布之间需要有先后顺序。目前确实没有什么好的办法。

    5、目前很多流行的技术都可以帮助我们完整一些工作,比如git、svn可以帮助我们管理版本,我们可以从上面下载指定的版本部署;maven可以帮助我们更快的编译测试代码。但是这些工具都太分散了,有没还有一种工具能够提供一套统一的操作给我们呢

    从上面的问题我们可以得知,持续集成并不是指一种工具或者说一种技术,而是一个良好的实践习惯,当然我们需要工具辅助我们进行持续集成。那如何定义持续集成了,不妨看看大师是怎么定义的:

    大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。


二、持续集成可以带给我们什么好处

减少风险

一天中进行多次的集成,并做了相应的测试,这样有利于检查缺陷,了解软件的健康状况,减少假定。

减少重复过程

减少重复的过程可以节省时间、费用和工作量。说起来简单,做起来难。这些浪费时间的重复劳动可能在我们的项目活动的任何一个环节发生,包括代码编译、数据库集成、测试、审查、部署及反馈。通过自动化的持续集成可以将这些重复的动作都变成自动化的,无需太多人工干预,让人们的时间更多的投入到动脑筋的、更高价值的事情上。

任何时间、任何地点生成可部署的软件

持续集成可以让您在任何时间发布可以部署的软件。从外界来看,这是持续集成最明显的好处,我们可以对改进软件品质和减少风险说起来滔滔不绝,但对于客户来说,可以部署的软件产品是最实际的资产。利用持续集成,您可以经常对源代码进行一些小改动,并将这些改动和其他的代码进行集成。如果出现问题,项目成员马上就会被通知到,问题会第一时间被修复。不采用持续集成的情况下,这些问题有可能到交付前的集成测试的时候才发现,有可能会导致延迟发布产品,而在急于修复这些缺陷的时候又有可能引入新的缺陷,最终可能导致项目失败。

增强项目的可见性

持续集成让我们能够注意到趋势并进行有效的决策。如果没有真实或最新的数据提供支持,项目就会遇到麻烦,每个人都会提出他最好的猜测。通常,项目成员通过手工收集这些信息,增加了负担,也很耗时。持续集成可以带来两点积极效果:

(1)有效决策:持续集成系统为项目构建状态和品质指标提供了及时的信息,有些持续集成系统可以报告功能完成度和缺陷率。

(2)注意到趋势:由于经常集成,我们可以看到一些趋势,如构建成功或失败、总体品质以及其它的项目信息。

建立团队对开发产品的信心

持续集成可以建立开发团队对开发产品的信心,因为他们清楚的知道每一次构建的结果,他们知道他们对软件的改动造成了哪些影响,结果怎么样。


三、持续集成需要我们怎么做

1. 所有的开发人员需要在本地机器上做本地构建,然后再提交的版本控制库中,从而确保他们的变更不会导致持续集成失败。

2. 开发人员每天至少向版本控制库中提交一次代码。

3. 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。

4. 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。

5. 每次构建都要100%通过。

6. 每次构建都可以生成可发布的产品。

7. 修复失败的构建是优先级最高的事情。

8. 测试是未来,未来是测试