《持续交付》读书笔记-第三章-持续集成

关于《持续交付》这本书,有评论称之为“持续交付精华的蒸馏水”


“Continuous Delivery: Reliable Software Releases Through Build, Test, and and Deployment Automation”, Jez Humble, David Farley, Addison Wesley, 2010

内容概要:

  • 一本持续交付早期的书
  • 它的出版其实在 DevOps 被热炒之前,但是它还是道出了DevOps概念的精华
  • 此书分为三部分:Foundation, The Deployment Pipeline, 和 The Delivery Ecosystem
  • 本书基于作者的时间经验,并涉及到重要的方面,如功能割接

以下是本章读书笔记脑图的图片以及之上的文字内容。
本图在Mac OS X上用MindNode软件编辑。下载MindNode原文件

CD-3-持续集成

目标

让正在开发的软件一直处于整体可以工作的状态

任何人提交代码之后,对整个应用做构建,并执行全面的自动化测试集合

如果有任何失败发生,团队要停止手头工作先修复错误

准则

持续集成不是工具,而是一种实践

所有人投入一定的精力

修复那些破坏了应用的任意源代码修改是团队优先级最高的任务

有限性依赖于团队的纪律

实现方式

准备工作

版本控制

  • 产品代码

  • 测试代码

  • 数据库脚本

  • 构建脚本

  • 部署脚本

自动化构建

  • 前提条件

    • 人和计算机都能通过命令行自动执行应用的构建、测试以及部署过程
  • 目标

    • 自动化执行整个过程,能对出现问题的做审计

    • 构建脚本应该与应用代码同等对待

    • 构建过程应该容易理解、维护、调试和协作

持续集成系统

厂商-工具

  • Handson

    • Jenkins
  • CruiseControl

    • CruiseContrul

    • CruiseContrul.NET

    • CruiseContrul.rb

  • ThoughtWorks

    • GoCD
  • TeamCity

  • Bamboo

  • Pulse

  • AntHillPro

  • ElectricCommander

  • BuildForge

文档记录和自动化持续集成构建服务器的配置

工作步骤

  • 7个步骤的流程图随后可以画一个

期望结果

  • 环境只要与我的持续集成环境一直,我的软件就可以工作

前提条件

频繁提交

每天至少几次

代码的主干-分支

  • 提交到主干

  • 不推荐使用分支

  • 分支无法实现持续集成

创建全面的自动化测试集合包

单元测试

  • 对象

    • 每个方法

    • 每个函数

    • 一组方法和函数之间的调用

  • 十分钟内完成所有测试

组件测试

  • 测试几个组件的行为

  • 可能需要连接数据库、访问文件系统、外部接口

  • 需要较长时间完成测试

验收测试

  • 测试是否满足预定义的业务需求

  • 其它方面

    • 容量

    • 有效性

    • 安全性

  • 整个应用最好运行在类生产环境

  • 运行一整天或者更长

构建和测试过程维护在更短的时间内

理想的时间:十分钟内,最好五分钟内,越短越好

效率工具

  • JUnit

  • NUnit

将测试分成若干阶段

  • 第一阶段:提交阶段

    • 编译软件

    • 执行单元测试

    • 构建部署包

    • 冒烟测试(可选)

  • 第二阶段

    • 验收测试

    • 集成测试

    • 性能测试(可选)

    • 任务可以并行

    • 大于半小时就需要通过投入更多运算资源降低时间消耗

管理开发工作区

从一个已知最新的正确版本的起点开始

精细的配置管理是基础

注意依赖的库文件

应用可以在开发机上跑起来

自动化测试(含冒烟测试)能在开发机上跑通

使用持续集成软件

基本操作

动作

  • 第一部分:按时间间隔执行工作流水线

  • 第二部分:展示流水线运行结果

铃声和口哨

使用声光电等提示错误提示手段

第一时间了解构建状态

现在可以发送:Slack等即时线上通讯手段

相关分析

  • 测试覆盖率

  • 重复代码

  • 编码标准的遵从

  • 健康指标

最佳实践

构建失败后停止新代码提交

提交前在本地和持续集成服务器测试执行所有目标测试

保证构建一直是绿的

预提交测试

  • pretested commit

  • personal build

  • preflight build

在本地测试将要提交的代码

等提交通过之后再继续工作

构建必须成功后才能回家

随时准备回滚到前一个旧版本

不能在构建失败的情况下提交代码

回滚前要规定一个修复时间

例如:十分钟无法修复代码就回归到前一个版本

不要将失败的测试注释掉

为自己所导致的问题负责

使用测试驱动开发

推荐实践

极限编程开发实践

若违背了架构原则,就让构建失败

若测试运行变慢了,就让构建失败

本地测试容忍时间:秒级

尽早解决测试的性能问题

若编译告警或代码风格有误,就让测试失败

代码检查工具

  • Simian

  • CheckStyle

  • FindBugs

提高代码质量

分布式团队

对流程的影响

集中式持续集成

技术问题

替代方法

分布式版本控制系统

小结

持续集成提高了团队的生产效率

需要良好的团队记录

相关基础设施

一个巨大的可视化指示器

结果报表系统,供给给测试团队的安装包

为项目经理提供项目资料监测的应用或报表

用持续部署的流水线,为所有人员提供能延伸到生产环境的一键式部署

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容