穿梭集成

一、软件开发面临的题材

  • 规定软件需要
  • 规定项目进度(可知性)
  • 怎么着以最快捷度将软件交付给用户?
  • 如何让开发、测试、产品CEO、运行人士快速工作?

软件须求满意于工作目标,品质不等于完美,“追求完美是把业务办好的大敌”。

二、持续集成

不停集成是一种软件开发实践【不是工具】,即协会支付成员平常集成他们的劳作,经常每种成员每一日起码集成两回。每便集塔林因此自动化的创设(包含编译,发表,自动化测试)来评释,从而尽快地发现集成错误。
— 马丁 Fowler

房地产项目,频频集成

三、持续集成的价值

1.协作

让开发的软件直接处在可工作处境

2.开发人士

  • 快捷发现标题
    消除难题的严重性是尽早发现标题
    缩减引入缺陷与修补缺陷之间的年华

  • 预防分支大幅偏离主干

  • 调减重复进度&人为不当:
    以自动化编译、公布、测试…,代替手工操作
    防止了有的人造的一无所能(build号忘加一,Debug开关忘关)

  • 创设集体对开发产品的信心

3. 测试人士

小步增量,易于发现标题,并飞快反馈给开发人士

四、小结

集成的目标其实是交换:集成可以让开发者告诉其旁人他们都改了如李亚平西,频仍的维系可以让开发者更快地打听变化。

五、持续集成的前提条件

1.团队共识

不停集成不是工具,是一种实施,须要投入并坚守一些规则,才能进步质量

2.屡屡提交

“尽管您赶上一件很惨痛的事体,就像比较好的指出就是更频仍地做那件业务”
— Martin Fowler
艺术学:一件事情很难,又不可以不去做,不妨常常去做,每回做一点,分而治之,坚持不渝、跬步千里
—— 早集成、常集成
化解难点的最紧假设尽快发现难点
每过多少个钟头就交付一回,争持也会在多少个时辰以内被察觉
一次提交之间只有多少个小时的修改,暴发这个题材只可能在很单薄的多少个地点
付出的更多,须求寻找争执错误的地方就越少,改起来也越快
用异样调试对比当前版本和事先未曾 bug 的版本
创设上会鼓励开发者将工作分解成以小时计的小块

3. 有限援救每一次提交的品质

每一趟提交的本子都有恐怕发生2个可揭晓的版本
每回提交的质感不好,不但会潜移默化自个儿,而且会影响别人

4.不单单源代码

与类型有关的保有故事情节(代码、测试代码、数据库脚本、创设与配置脚本、
IDE配置文件,以及拥有用于创建、安装、运转、测试应用程序的事物)
关于那点,可以参见绵绵集成之“伊芙rything is
code”

5. 健全的自动化创设、测试套件

  • 10分钟 build(快速的build)
    一向不怎么比缓慢的 build 更能损害不止集成移动
    若是付出 build 成功,其余人就可以放心地基于这一个代码工作了
  • 在差别的情事中 build 差其余 target
  • 每便代码提交后都会在时时刻刻集成服务器上接触三次打造
    构建不只是编译,只怕含有编译、测试、审查和配置以及任何一些事情,将代码放在一起,并让其得以看做1个一如既往的单元运转的进度
  • 自动化专业
    任什么人都应该能从3个彻底的处理器上 check out
    源代码,然后敲入一条命令,就可以收获能在那台机械上运维的连串

6. 本地环境与不断集成环境、测试环境、生产条件一致

deployment-plan.gif

关于环境可参看:Traditional Development/Integration/Staging/Production
Practice for Software
Development

六、须要的执行

1.“最新的正确性版本”作为起源

2.天天准备回滚到前一个版本

3.修复破坏应用程序的即兴修改是最高优先级的天职

10分钟修复不完,须求回滚&在回滚以前要规定1个修复时间

4. 等提交测试通过后再持续工作

给自个儿喝一杯咖啡的年华
伺机集成重回结果后一而再做事能压缩不当,也能令人家在新式的不利版本作为源点

5.提交前在地面运营具有的付出测试

当代CI服务器提供“预测试提交”、“个人创设”

6.营造退步后并非提交新代码

7.谁提交,谁负责

监视 mainline 上的打造,失利时即时修复
假定在收工前提交了代码,那在 mainline 营造成功此前就不能回家

8.勿将战败的测试注释掉

修改代码、修改测试、删除测试

9.测试驱动开发

七、 持续集成实践步骤

1.自动化构建
2.引入自动化测试

试着指出首要出错的地点,并要让自动化测试揭露这几个错误

3.试着加快build 的进度

10分钟build

4.CI选型

https://github.com/ligurio/Continuous-Integration-services/blob/master/continuous-integration-services-list.md

5.寻找老驾驶员协理(很重大)

老车手理论+实践经验丰硕

详见

https://github.com/CatchZeng/ContinuousIntegration

相关文章