一、什么是持续集成(Continuous Integration)?
这个名词已经在软件开发领域持续了N年,一个比较简单的定义如下:
持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。更具体的解释可以参考Martin fowler的Continuous Integration  。
二、持续集成的价值与成本
有句时髦的话,叫做“存在即为合理”。既然持续集成已经存在了这么长的时间,而且没有消失的迹象,那就是有价值的东西。那么它的价值何在?有人概括如下:(1) 减小风险;(2) 减少手动过程;(3) 生成构建结果;(4) 安全感。
而持续集成的成本在于对持续集成代码的维护成本和集成的时间成本。因为随着项目进行,软硬件环境会越来越复杂,成品代码也会不断膨胀。此时,需要团队而修改或增加原有的测试代码,以适应这些变化,同时,每次集成所需时间也会变长,这就是持续集成的成本。某个blog中提道:“这种集成是如此的频繁,多少次的代码Commit就有多少次持续集成。前提是集成的成本很低,或者说是完全自动化的。”
三、持续集成应该自动化什么呢?
我们要以尽可能少的成本来获得尽可能多的价值。这就要考虑哪些自动化是必要的啦。Jez Humble提到至少有六点要做到自动化,它们分别是(1)自动化的运行测试;(2) 自动产生可部署的二进制成品;(3) 自动将成品自动部署到近似生产环境;(4) 自动为CodeBase打上标签;(5) 自动运行回归测试;(6)自动生成度量报告。
四、持续集成服务器的选择
在进行持续集成实践前,应当正确的选择并配置持续集成服务器。比较成熟的持续集成服务器包括:CruiseControl, Anthill, Bamboo, TeamCity, Continuum 等。CruiseControl作为开源产品,以其对于各种SCM以及构建工具的广泛支持而被许多开发团队所接受。而开发自动化专家 Duvall 采用一致的评估标准和很多说明性示例,介绍了一些开源 CI 服务器,包括 Continuum、CruiseControl 和 Luntbuild。并指出“要根据 自己的 具体技术和政策需求对工具进行分析”。并用以下五个指标来评估CI工具,它们分别是:(1)  特性;(2)  可靠性;(3)  寿命;(4) 目标环境;(5) 易用性。结果如下表:
而CruiseControl是我唯一真正用过的持续集成工具,它现在灵活而又强大功能也让我瞠目,而且配置与管理也较两年前容易得多啦。为什么说它强大呢?因为你只要想得到的问题,它也都会有所考虑。朋友的Blog上有些CruiseControl的最佳实践足以证明这一点,只要你肯去实践。
五、只有持续集成服务器是远远不够的
正如Jez Humble所说,CruiseControl和其它的CI工具本质上只不过是一个定时器,时间一到,做你让它做的事情。所以,必然要有其它工具与其结合,方显持续集成的本色。这些工具又是什么呢?想测试的话,你就要用一些测试工具,如JUnit,JWebUnit,Selenium等等;想检查代码标准的话,你就要用checkstyle等代码规范检查工具;想要了解测试覆盖率的话,你可能就要用到JCoverage啦。当然,想得到二进制文件,就要用到Ant,Make之类的工具啦。
六、最重要的事:实践与反思
也许这些东西大家都知道,而且有些人可能已经实践过啦。无论这些实践的结果是怎样的,一定不要忘记总结和反思。如果这些实践成功了,不要把它归功于这个工具,而是要总结一下为什么会成功,如果你愿意的话,还可以和大家分享一下。如果这些实践失败了,也不要把它归功于这个工具,而是要反思一下,是否正确地使用了这个工具,团队成员是否都喜欢这个工具,为什么?

转载于:https://www.cnblogs.com/huapox/archive/2013/01/01/3251557.html

持续集成:什么应该自动化?相关推荐

  1. 持续集成在Hexo自动化部署上的实践

      曾经听到过这样一句话,"不要用战术上的勤奋掩盖战略上的懒惰",所以战术和战略更像是抽象类和具体类,而面向对象设计实际上是现实等级制度的一种映射.因此我们注意到,决策者通常关注的 ...

  2. 自动化持续集成_为人民自动化,选择持续集成服务器

    存档日期:2019年5月15日 | 首次发布:2006年9月5日 有这么多的持续集成(CI)服务器可供选择,因此很难确定哪种服务器适合您. 在< 面向人类的自动化 >系列的第二篇文章中,开 ...

  3. 持续集成之戏说Check-in Dance

    <infoq> 众所周知,敏捷软件开发方法中有多种最佳实践,既有管理方面的,也有技术方面的.在尝试敏捷之初,并不是每个团队都能使用全部最佳实践,也不是每个实践都能在短时间内见效.但其中有一 ...

  4. 持续集成与持续部署宝典Part 2:创建持续集成流水线

    2019独角兽企业重金招聘Python工程师标准>>> 在本系列文章中,我们将探讨在容器时代如何在基于Docker的环境中创建连贯的工作流程和流水线来简化大规模项目的部署.另外,我们 ...

  5. 基于 KIF 的 iOS UI 自动化测试和持续集成

    客户端 UI 自动化测试是大多数测试团队的研究重点,本文介绍猫眼测试团队在猫眼 iOS 客户端实践的基于 KIF 的 UI 自动化测试和持续集成过程. 一.测试框架的选择 iOS UI 自动化测试框架 ...

  6. Jenkins多环境持续集成架构实践

    作者:滴答的雨 出处:http://www.cnblogs.com/heyuquan/ Jenkins多环境持续集成架构实践 自动化部署主要是为了解决项目多.环境多.持续集成慢.部署操作麻烦.手动操作 ...

  7. python持续集成工具_21 个好用的持续集成工具,总有一款适合你

    原标题:21 个好用的持续集成工具,总有一款适合你 市场上持续集成工具众多,找到一个合适的工具并非易事,下面介绍了 21 个比较受欢迎的 CI 工具,并附上了下载链接. 1. Buddy 对 Web ...

  8. 2022全网最全的持续集成基础【你知道的和不知道都在这里】

    这一篇讲一讲持续集成的基础.没有持续集成,做自动化是不完整的,为了减少人工介入和提高迭代速度,现在越来越多的公司引入了持续集成系统.如果你自动化测试入了,下一步就是搞一个持续集成系统,不要再手工在本地 ...

  9. 21 个好用的持续集成工具,总有一款适合你

    市场上持续集成工具众多,找到一个合适的工具并非易事,下面介绍了 21 个比较受欢迎的 CI 工具,并附上了下载链接. 1. Buddy 对 Web 开发者来说,Buddy 是一个智能的 CI/CD 工 ...

  10. 微服务容器部署与持续集成(Jenkins)

    微服务容器部署与持续集成(Jenkins) 一.微服务容器部署 1.Dockerfile 1.1 Dockerfile简介 1.2 使用脚本创建镜像 2.Docker私有仓库 2.1 私有仓库搭建与配 ...

最新文章

  1. 教你高效地学习和制作PPT
  2. iOS中UIActionSheet使用详解
  3. 039_Unicode对照表五
  4. 如何查看云服务器的系统版本,如何查看云服务器系统版本
  5. Kafka团队修改KSQL开源许可,怒怼云厂商
  6. Python:高阶错误
  7. Android RemoteController使用
  8. android nfc ndef mifareclassic,Android NFC开发-实践篇
  9. CMS :内容管理系统
  10. html里面css什么意思,Web前端
  11. 引用原话,不等于原意
  12. 【笔记】mac上如何用命令行编译jni
  13. 可视化指标计算公式_基于OTU的alpha多样性指数计算和可视化
  14. 2D游戏引擎开发入门(一)
  15. Poi 、Jacob 统计word文档字数实现方式
  16. 一、windows安装docker
  17. C PrimerPlus 第五章程序示例
  18. java jcmd,JVM工具_jcmd
  19. 中国科学院沈阳计算技术研究所考研问题
  20. ES聚合Aggregation---原生(restful)api

热门文章

  1. 【linux高级程序设计】(第八章)进程管理与程序开发 4
  2. C++ 著名程序库 概览
  3. 对Spring的IoC和DI最生动的解释
  4. UVA 583 素数打表(线性)
  5. ios 简单的计时器游戏 NSUserDefaults NSDate NSTimer
  6. 工作面试时最难的25个问题
  7. lucene造成磁盘空间不足的问题
  8. python文件行数运行结果_python统计文件行数
  9. 微信公众帐号开发教程第7篇-文本消息中换行符的使用
  10. java下linux和window通用的获取指定网段的本地ip地址(NetworkInterface)