频频集成 — 理论篇

频频集成 — 理论篇

相同、软件开发面临的题材

  • 规定软件需要
  • 确定项目进度(可见性)
  • 争以极抢速度将软件提交给用户?
  • 什么样被开发、测试、产品经营、运维人员迅速工作?

软件需要满足于工作目的,质量无对等完美,“追求面面俱到是将作业做好的冤家”。

第二、持续集成

络绎不绝集成是一样栽软件开发实践【不是工具】,即组织出成员经常集成他们之做事,通常每个成员每天起码集成一不成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来证实,从而尽快地窥见并错误。
— Martin Fowler

络绎不绝集成

其三、持续集成的值

1.协作

为开发之软件直接处于可工作状态

2.开发人员

  • 赶快发现问题
    解决问题之重大是快发现题目
    调减引入缺陷以及修复缺陷之间的日子

  • 防分支大幅偏离主干

  • 压缩重复过程&人为不当:
    以自动化编译、发布、测试…,代替手工操作
    避了一部分人工的不当(build号忘加1、Debug开关忘关)

  • 确立集体对出产品的信念

3. 测试人员

粗步增量,易于发现题目,并飞速反馈给开发人员

四、小结

合并的目的其实是维系:集成可以让开发者告诉其他人他们都改了哟东西,频繁之沟通好于开发者重新快地打听变化。

五、持续集成的前提条件

1.团队共识

络绎不绝集成不是工具,是千篇一律种植实施,需要投入并遵照一些条条框框,才会提高质量

2.反复提交

“如果您遇上相同桩好惨痛之事体,似乎较好的建议就是重频繁地做这桩业务”
— Martin Fowler
哲学:一宗业务很麻烦,又不能不去做,不妨经常去开,每次做一点,分而治之,滴水穿石、跬步千里
—— 早集成、常集成
釜底抽薪问题之首要是尽早发现问题
各级过几只钟头即付一赖,冲突为会见当几乎独钟头之内吃发现
少不行提交之间就来几乎独小时的改,产生这些题材无非或以充分单薄的几乎单地方
提交的更多,需要找冲突错误的地方就更是少,改起也更快
就此异样调试比较时本与事先未曾 bug 的本
理所当然上会鼓励开发者将工作分解变成因为时计之有些片

3. 确保每次交的品质

每次交的本都出或发一个但发布的本子
老是交的质不好,不但会潜移默化好,而且会影响别人

4.不单单源代码

以及品类有关的有内容(代码、测试代码、数据库脚本、构建和配置脚本、
IDE配置文件,以及有着用于创造、安装、运行、测试应用程序的物)
至于这点,可以参见频频集成的“Everything is
code”

5. 两全的自动化构建、测试套件

  • 10分钟 build(快速的build)
    从来不啊比较缓慢的 build 更会损害不止集成移动
    倘付出 build 成功,其他人就得放心地基于这些代码工作了
  • 在不同之情形被 build 不同的 target
  • 每次代码提交后都见面以连集成服务器上触一不好构建
    构建不单独是编译,可能包含编译、测试、审查与布局及另外一些业务,将代码放在一块儿,并被那得以看做一个一致的单元运行的经过
  • 自动化专业
    任何人都应有力所能及于一个绝望之电脑达 check out
    源代码,然后敲入一条命令,就好拿走能当即时令机器及运行的网

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

deployment-plan.gif

至于环境而参看:Traditional Development/Integration/Staging/Production
Practice for Software
Development

六、必要之执行

1.“最新的不易版本”作为起点

2.时刻准备回滚到前面一个本

3.修复破坏应用程序的轻易修改是参天优先级的任务

10分钟修复不结,需要回滚&在回滚之前如果确定一个修复时

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

admin

网站地图xml地图