持续集成 Continuous Integration 关键实践

现代IT系统的开发多是由一个数人组成的开发团队共同完成,在多人协同开发的情况,如何进行有效的代码集成将直接影响到项目的进度、效率、质量。

什么是持续集成

持续集成的一个要点是频繁的进行代码集成,并且快速解决集成代码中的错误。以下是持续集成的一个典型流程:


关键实践

  • 维护统一的代码库
    使用代码库最常犯的错误是只把代码储存在代码中,而忽略了测试用例脚本、配置文件、数据库schema文件、安装脚本、以及第三方库。什么应该提交至代码库的基本原则是:当我们要部署一台刚初始化的服务器时,可以通过代码库中的内容完成部署。

  • 自动化构建
    构建的过程尽量优化,以缩短构建的时间。例如:一个小的变更,可能不需要对整个项目进行全盘的构建,而只需要对其修改、影响部分进行构建即可,从而减少不必要的构建时间。

  • 确保自己的代码经过测试
    确保代码经过自测试的最佳实践是通过自动化测试。代码在提交前通过已定义的测试集进行测试,以保障基础的质量水平。

  • 每天提交代码
    集成其实是程序员间的一种交流方式。频繁的代码集成,有助于程序员间进行互相了解,程序员可以更早的发现代码间的冲突,从而可以今早解决主干代码的问题,保证主干代码的健康。否则,问题日积月累,积重难返。

  • 代码提交成功以提交后构建成功为准
    这部分有两类型典型的错误用法。一种是程序员提交代码后,不需要参考集成构建的结果,则认为集成已经成功了;另一种是代码的集成构建通常在一天的晚上进行,而不是代码每次提交后进行。这两种做法的主要问题是代码提交后,若不经过构建,无法发现潜在的问题。即使是每天晚上进行集成构建,当发现问题时,已经很难分辨问题的责任人。因此,这部分的最佳实践应该是代码提交后,立即执行构建。若出现问题,程序员即时进行处理。当构建成功后,才认为代码提交成功。

  • 立即解决代码集成出现的错误
    当集成构建出现问题时,需要立即解决问题。否则问题越积越多,复杂性越来越大,则积重难返。

  • 加快构建的速度
    构建的速度将直接影响开发的效率。但是在构建的过程中,如果涉及到大量的外部系统、数据库调用、测试集,这都会降低构建的效率。但是,如果通过stub、减少测试集等方法来提高构建效率,这又会影响构建的质量水平。因此,为了提高构建效率,一种比较好的实践是将构建分为几个阶段。第一个构建阶段,通过stub的方式减少对外部系统的依赖,保持必要的测试集尽量保障构建的效率。第二个阶段,进行比较全面的集成测试,以保障质量。沟通这种方式,保障开发效率以及开发质量间的平衡。

  • 在类生产商环境中进行测试
    尽量在模拟生成环境进行测试。可通过容器、云计算的方式尽量模拟生产环境。

  • 让可执行的包可以被很容易的获取
    在敏捷实践中,快速向用户展示可用的产品获得用户反馈是保障项产品成功的关键。因此,用户、产品经理、相关干系人能够轻易的找到可执行的产品进行试用是持续集成的最佳实践之一。

  • 自动化发布
    在集成完成后,通过自动化的方式对接持续交付进入交付管道。

持续集成的好处

简单来说持续集成带来的最大的好处是降低来风险。虽然持续集成并没有减少bug的产生,但是通过快速集成、构建的方式,今早的发现问题,解决问题,从而加强来系统的质量,强化了整个团队对系统的信心。

参考文献


pstrike 2018.08.20 于广州天河

【尊重版权:转载之前请先联系我】

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

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,913评论 2 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,831评论 25 707
  • 夕阳用余晖包围了篱笆 尽显它那奢华 山上野花正准备发芽 小院两只白鸭 日出在清晨漫过草地 看见你那秀发 南城外,是...
    魏翔阅读 229评论 0 0
  • “你还没有忘了她吧。" “早忘了” “我还没有说是谁” 很早以前就看到这个对话,心中有很多感慨。今天我们就来闲谈一...
    somnus夏默语阅读 744评论 0 1
  • 雨夜 小酒馆未打烊 对视之余 你 走进酒馆 环顾四周也不点酒 就那样看着我 气息微妙 我又把你轰出了酒馆 说着 从...
    陈意平阅读 179评论 0 5