辩护篇

同、软件开发面临的问题

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

软件需要满意于业务目标,质地无齐完美,“追求面面俱到是拿事情办好的仇人”。

次、持续集成

穿梭集成是同一种软件开发实践【勿是工具】,即公司开成员时集成他们之办事,经常每个成员天天最少集成三遍。每一趟集巴拿马城经自动化的构建(包括编译,发表,自动化测试)来申明,从而尽快地发现并错误。
— 马丁(Martin) 福勒(Fowler)

穿梭集成

老三、持续集成的价

1.协作

被开发的软件直接处于可工作状态

2.开发人士

  • 尽早发现问题
    化解问题的最重假设及早发现问题
    减掉引入缺陷以及修复缺陷之间的时日

  • 避免分支大幅偏离主干

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

  • 树协会对开发产品的信念

3. 测试人士

稍稍步增量,易于发现问题,并快速反馈让开发人士

四、小结

合并的目标其实是互换:集成可以让开发者告诉其别人他们还转了啊东西,频繁的维系好吃开发者重新快地问询变化。

五、持续集成的前提条件

亚洲必赢bwin696.com,1.团队共识

穿梭集成不是工具,是一模一样种实施,需要投入并遵守一些条条框框,才能够提高质地

2.累提交

“如若您遇见同样宗好痛的业务,似乎相比较好之指出就是再一次频繁地举行就起工作”
— Martin Fowler
医学:一宗工作蛮不便,又必须去开,不妨时常去做,每一次做一些,分而治之,滴水穿石、跬步千里
—— 早集成、常集成
解决问题的显如果急速发现问题
各过几个刻钟就是付出一赖,争持吧会于五只钟头内被发现
少不行提交之间仅出两只钟头的修改,发生这个题材就或以怪单薄的几单地点
交的愈发多,需要摸索争持错误的地方便逾少,改起来呢更加快
之所以异样调试相比时版本和事先从未 bug 的版本
客观上会晤鼓励开发者将工作讲成因为时计的有些片

3. 确保每一趟交的质量

老是交的版本都来或发生一个然而发表之本
每一趟交的质不好,不但会影响自己,而且会潜移默化别人

4.不单单源代码

和品类有关的具备情节(代码、测试代码、数据库脚本、构建与安排脚本、
IDE配置文件,以及有用于创制、安装、运行、测试应用程序的物)
至于这一点,能够参见频频集成的“伊芙(Eve)rything 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

相关文章