《持续集成》读书笔记之二

前言

什么是持续集成,这个不用再说了,随便百度一下就有。持续集成到底意味着什么呢?前言中有如下的详细描述:

1. 所有开发者都现在他们自己的工作站上执行私有构建,然后再将他们的代码提交到版本控制库中,从而确保他们的变更不会导致集成构建失败。

2. 开发者每天至少向版本控制库提交一次代码。

3. 集成构建每天在一台独立的计算机上进行多次。

4. 每次构建都必须100%通过测试。

5. 生成可以进行功能测试的产品(如WAR、配件、可执行程序等)。

6. 修复失败的构建是优先级最高的事情。

7. 某些开发者复查构建生成的报告,如编码标准报告和依赖分析报告,寻找可以改进的地方。

对照我们现在的状况,2还没有度量,4和6并没有完全被遵守,还是有不少不符合的地方,需要持续改进,不过难的是如何改变开发人员的意识。

第1章 启程

针对每次变更构建软件。

想法:现在我们还没做到每次代码提交就触发一次构建,仍然还只是定时触发的,这样可能多个人的代码提交会被合并在一起。这主要是由于机器资源不足导致流程构建时间过长,另外大家还并未全部养成原子提交的习惯。

最后的问题,可以思考一下:

您怎样才知道自己正在正确地进行CI?以下问题可以帮助您确定项目中做得不够的地方。

1. 是否使用版本控制库(或SCM工具)?

2. 项目的构建过程是否已经自动化并可重复?它完全不需要干预吗?

3. 是否编写并执行自动化的测试?

4. 执行测试是否是构建过程的一部分?

5. 如何确定编码标准和设计标准?

6. 哪一种反馈机制是自动化的?

7. 是否使用独立的集成计算机进行软件构建?

想法:很长时间以来,我们的持续集成没有自动化测试,也就只是持续编译和持续检查。不过自动化测试确实逐渐多起来了,也有开发团队感受到了它的好处,并且愿意主动去做,会越来越好的。

第2章 引入持续集成

经常提交代码

不要提交无法构建的代码

立即修复无法集成的构建

编写自动化的开发者测试

必须通过所有测试和审查

执行私有构建

避免签出无法构建的代码

CI作为品质的中心工作:有些人将CI看作简单地将软件组件放在一起的过程。我们把CI看作软件开发的中心工作,因为它通过每次变更执行构建,保证了软件的健康。检查软件的品质就是检查最新的集成构建,就这么简单。

提纲挈领,态度鲜明,不过有时要推行起来似乎不是这么简单,尤其是CI纪律部分。要如何让研发团队感受到CI的价值呢?

CI的价值是什么?从大的方面来说,CI的价值在于:

1. 减少风险:缺陷的监测和修复变得更快;软件的健康程度可以测量;减少假定;

2. 减少重复过程。

3. 在任何时间、任何地点生成可部署的软件。

4. 增强项目的可见性:有效地决策;注意到趋势。

5. 对开发团队的软件产品建立起更强大的产品信心。

这些好处,哪些是一线开发人员能感知到的?哪些是项目经理层面感知到的?

什么阻碍了团队使用CI?

1. 增加了维护CI系统的开销。

其实是把后面要做的事情提到前面做了,会让大家觉得要做的事情变多了。

2. 变化太大。

推荐循序渐进的推进CI,比如先进行日构建,然后逐渐增加频率。

3. 失败的构建太多。

主要原因是提交代码之前没有进行私有构建,确实是的。

4. 额外的硬件/软件成本。

这确实是个开销,不过机器的成本其实要比人力成本低得多。

5. 开发者应该执行这些动作。

是持续编译还是持续集成?

我曾经与一些正在实现CI的组织机构一起工作,有时候我听到他们说:“是的,我们有CI。”当然,我认为,“这很棒!”然后问了几个问题。你们的测试达到多少代码覆盖率?执行构建需要多长时间?你们平局的代码复杂度如何?有多少代码重复?你们在版本控制系统中对构建版本打上标签了吗?你们将已部署的软件存放在哪里?

我发现他们移植在做的其实更像是“持续编译”,他们安装了像CruiseControl这样的工具轮询版本控制库中的变更。当它监测到变更时,它就从中去除源代码,进行编译,如果出现问题就发出一封电子邮件。在一台单独的计算机上自动地编译软件系统要好过什么都不做,但并不能提供全功能的CI系统锁带来的好处。

对照一下,我们确实还有很多可改进的地方。

CI如何与其他开发实践配合?

1. 开发者测试。

开发人员编写的自动化测试。

2. 坚持编码标准。

这方面我们做得还不错,CheckStyle/PMD/findbugs/cppcheck等工具一直都在使用。

3. 重构。

4. 小发行版本。

5. 共同拥有代码。

让构建保持“亮绿灯”

我发现对于有效使用CI有两个测量指标:提交的次数和构建的状态。每个开发者(或两个结对的开发者)每天至少应该向版本控制库提交一次,签入的次数通畅说明了变更的大小(更多的提交通畅意味着更小的变更,这是好事)。在一天的大多数时候,您的构建状态应该是“亮绿灯”(通过),要让整个团队都重视这一点。我们有时候会得到“亮红灯”的构建,但重要的是尽快让它回到“亮绿灯”的状态。不要让您的团队习惯先处理别的项目任务,再去处理等待的红灯。如果放着红灯状态不管而去做其他工作,就会削弱CI的好处。

很有效的CI指示器。


我是有底线的

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

推荐阅读更多精彩内容