思步网

标题: 关于持续集成中的开发模式 [打印本页]

作者: 青青小草    时间: 2012-4-17 17:09
标题: 关于持续集成中的开发模式
    在我接触过的持续集成推广案例以及网上所推崇的持续集成中,持续集成最重要的概念即是:尽早集成代码,禁止私有分支;*
在持续集成的理论中,什么是私有分支?

   比如传统的开发模式中,项目A、项目B同时开发功能模块as,那么常规的做法是为项目A、B拉两条分支,大家各自在自己的分支中开发、提测、发布,当其中的某个分支发布后,比如A先发布,那么在A发布之后将分支A的代码合并到分支B中,之后B再发布;

    那么在持续集成中,以上传统模式中的分支A、分支B即是私有分支;

    传统的模式中,有一个开发任务C,开发人员张三可能需要独自开发一个星期才能交付或者跟其他人的代码集成,传统的做法:张三会拉一条私有分支,当一个星期开发完成后,再做代码合并;

在持续集成中,这种情况也是私有分支;

    在持续集成中,废弃了私有分支后,要求所有人将所有的代码都提交到统一的一条分支中,通常我们取主干,即所有人将所有代码都提交到主干中,我们还是以上面的两种案例来说:即项目A、项目B、项目C都要将代码提交到主干上;但是代码虽然在一起,却不能影响项目A的正常发布,这就意味着,项目A在发布的时候,其发布的代码中包括项目B、项目C的代码,并且项目B、C有可能还有bug,甚至有可能还没开发完成;

    说实话,当我第一次听说这种开发模式的时候,我特别诧异,觉得有些不可思议,但幸好,我之前接触的推广持续集成的项目是C语言的,这个项目在引入这种模式的时候,引入了编译开关,即当我们在代码中加入一段新功能的时候,我们为每个新功能引入编译开关,即项目A、B、C的代码虽然都在主干中,但是每个功能都有对应的开关,当A发布的时候,功能B、C的开发是关着的,即虽然B、C的代码也被发布了,但是功能不生效,所以不会影响A的正常发布;6 w
这种模式是引入了编译开关,但其实这个编译开关是一个幌子,表面上代码是集成在一起了,但由于B、C的开关是关着的,功能不生效,其实还是没有集成,还是会隐藏一些潜在的bug;

那么如果我们想要做到真正意义上的尽早集成代码,废弃私有分支,应该做些什么,怎么做?
1、需求拆分
2、开发任务拆分
3、本地构建7
4、全面的自动化功能测试、性能测试
    这4点种,第四点很容易理解,前面三点呢,为什么要做前面三步:需求拆分、开发任务拆分、本地构建 ,根本原因还是:因为我们要及早集成代码,所以我们要保证,每个人的代码至少每天下班前都要提交到主干中,这就意味中,每个人在提交代码前,必须保证他的代码质量是ok的,不能因为他的代码提交影响了其他人;(
下面再分开说前面三步:
1、需求拆分:
    这个也很好理解,原来的需求可能需要开发一个月,我们要进行需求拆分,将一个大需求拆分成n多个小需求,然后开发人员再分步实现,分步验证,以降低风险;
2、开发任务拆分:
    说实话,这个工作我没经历过,我只是大致知道概念:比如一个任务原本要开发一周,在写代码时,先写框架,然后再按照自己的任务分解逐个写实现,目标就是保证我每天都能将代码check in到主干中,并且保证程序是可run的,并且不会block其他人;6
3、本地构建:
    这个的目的还是为了保证代码质量,一般在每个人的代码提交前,至少要做三件事:ut、codereview、本地构建,本地构建在不影响效率的情况下,应该至少保证准入级别的case可以通过;

这四个任务中,任务1、3、4我觉得都ok,关于2,我曾经咨询过一些敏捷经验很丰富的人:怎样才能推行这项工作,他们的说法是:
我们需要招一个开发能力很强、敏捷开发经验很强的人来推行这项工作,由这个人去指导开发人员,然后1传2,2传4、4传8、……;
    我们先暂且不说这样的人有多难找,其次这种传法,难道不会在传递的过程中变形?

    说了这么多,我就是想说,禁止私有分支,第一、风险太大;第二、为了实现这个目标,我们前面要经历很多很多; E
所以如果我去推行持续集成,我会首先去推行1、3、4,在这三个都推行很好的情况下,特别是如果我们的自动化case覆盖率能够达到99%的情况下,我才敢去推行:禁止私有分支


作者: wer5asddw    时间: 2013-3-14 09:31
还不错哦,如果再能多分享一些就perfect了!
作者: lissaryeffilt    时间: 2013-4-3 23:32
我就是路过来看看的。。。
作者: 太阳雪下    时间: 2013-4-10 13:30
很有借鉴意义,先收藏了,谢谢楼主。
作者: 微笑都彷徨つ    时间: 2014-5-15 14:16
以我的经验来看,楼主的想法是可以执行的~
作者: 时光镜千    时间: 2014-6-16 15:16
very good.
作者: cs-ak-47    时间: 2014-7-6 20:18
我是个凑数的。。。
作者: 别低贱了自己    时间: 2014-8-14 21:12
没人回帖。。。我来个吧!
作者: 不夜之侯    时间: 2014-8-25 10:39
看起来好像不错的样子
作者: 灬潇尐爺ご    时间: 2014-9-15 16:34
前排支持下了哦~
作者: 百年的新娘。    时间: 2014-9-17 20:01
顶不错 支持下
作者: 的枯叶蝶i    时间: 2014-10-3 11:27
very good.
作者: 夜舞灬倾城    时间: 2014-10-14 10:54
看了LZ的帖子,我只想说一句很好很强大!
作者: Kimi    时间: 2014-12-2 16:05
确实不错,顶先
作者: 风晴雪流成河    时间: 2015-3-20 15:10
确实不错,顶先
作者: 贤带我走    时间: 2015-5-16 17:19
我也来顶一下..
作者: 丶情人眼    时间: 2015-5-16 19:29
我是个凑数的。。。
作者: 微亮的光芒    时间: 2015-10-8 09:17
学习下我只是路过,不发表意见……
作者: 瑾色长安    时间: 2016-1-11 13:22
好帖是需要鼓励的~
作者: 三爷。    时间: 2016-1-20 14:28
还不错哦,如果再能多分享一些就perfect了!
作者: 半仙    时间: 2016-2-5 12:35
很有借鉴意义,先收藏了,谢谢楼主。
作者: ╰つ此时彼刻    时间: 2016-2-17 19:08
众里寻他千百度,蓦然回首在这里!
作者: 努力了就会有    时间: 2016-4-30 11:32
以我的经验来看,楼主的想法是可以执行的~
作者: 笑很甜    时间: 2016-6-10 20:24
very good.
作者: 久随    时间: 2016-7-9 08:08
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
作者: 玉米小王子    时间: 2016-7-26 14:35
我是个凑数的。。。
作者: 赫尔墨斯!    时间: 2017-2-10 17:05
很有借鉴意义,先收藏了,谢谢楼主。
作者: 你真不要脸    时间: 2017-2-19 09:24
鼎力支持!!
作者: 外挂滤镜    时间: 2017-2-20 10:25
打酱油的人拉,顺便赚点金币
作者: 诱惑世间苍生丶    时间: 2017-2-20 15:08
好帖是需要鼓励的~
作者: 海豚湾的承诺    时间: 2017-9-6 15:53
路过 帮顶 嘿嘿
作者: 我们都    时间: 2017-9-14 11:33
支持,赞一个
作者: 东野牧风    时间: 2017-11-18 11:36
顶不错 支持下
作者: 泥巴    时间: 2017-12-3 12:05
看起来好像不错的样子
作者: 被撕碎了的回忆    时间: 2018-1-4 12:08
看了LZ的帖子,我只想说一句很好很强大!
作者: 但凭傲气    时间: 2018-3-6 18:54
路过的帮顶
作者: ヤ℡幼稚    时间: 2018-3-8 17:45
我是个凑数的。。。
作者: 心亦凉°    时间: 2018-3-22 13:52
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
作者: 慈禧太后@    时间: 2018-4-8 11:37
非常好,顶一下占位编辑
作者: 柏辙    时间: 2018-6-29 11:29
有空一起交流一下。
作者: 情断亦难    时间: 2018-10-11 21:12
确实不错,顶先
作者: 眼杂    时间: 2019-1-20 07:59
还不错哦,如果再能多分享一些就perfect了!
作者: 雾涩九月    时间: 2019-1-22 18:48
顶不错 支持下
作者: 千年之恋    时间: 2019-1-31 12:04
还不错哦,如果再能多分享一些就perfect了!
作者: 454566    时间: 2019-5-10 16:01
我也来顶一下..
作者: 用笑宣泄悲伤    时间: 2019-9-14 18:08
学习下我只是路过,不发表意见……
作者: 不做帝王妾    时间: 2020-5-26 07:23
学习下我只是路过,不发表意见……
作者: 墨雪卿    时间: 2020-11-8 15:39
看起来不错
作者: 无边雨丝    时间: 2021-6-10 22:20
好帖是需要鼓励的~
作者: 行善积德行    时间: 2021-10-5 14:14
确实不错,顶先




欢迎光临 思步网 (http://www.step365.com/) Powered by Discuz! X3.2