专业书籍精读 · 持续交付 · 第 3 章

持续集成

Continuous Delivery · Ch 3 · Jez Humble & David Farley · 2010

EN →

这一章讲什么?

一个软件不是一个人写出来的,是十几、几十个人同时在改同一堆东西。问题来了:各改各的,最后怎么合到一起?《持续交付》第 3 章讲的就是这件事,而它的答案有点反直觉——别攒着,每天都合

打个比方

五个人合写一本书,每人认领几章。第一种干法:各写各的三个月,最后一周凑到一起拼。你能想象那个场面——同一个人物在第三章死了、第七章又活着。拼书那一周有多痛苦,没人能提前估出来,因为谁也不知道埋了多少矛盾。

第二种干法:每人每天下班前,把当天写的内容并进那份共同的稿子,并进去就当场从头通读一遍。读不通,全组停下来先把它读通。这样每次要处理的矛盾都只有一天份,小到当场能解决。持续集成就是第二种干法。

旧世界为什么难

为什么大家宁可攒着?因为合并很烦,攒着显得「先把手上的事做完」更有效率。可矛盾不会因为你不看就消失,它只是在暗处越滚越大。更要命的是:第一种干法下,稿子在绝大部分时间里拼不起来、交不出去,只有拼完那一小段时间才好用——而你永远说不准还要拼多久。

核心点子

这一章要把这个默认状态倒过来:让稿子在任何时刻都通顺、能交付,偶尔坏一下、马上修好。做法是两条。

第一条:每人每天把改动并回那份唯一的共同版本,并回去就自动从头检查一遍。第二条更关键,也是最多团队做不到的:一旦检查没通过,全组立刻停下手上的事去修它,修好之前谁也不许往上面加新东西。这就像工厂流水线上任何人发现次品都能拉停线——听着耽误产量,实际上正因为停得起,次品才不会一路流到最后。修不好也有兜底:先退回昨天那个好用的版本

带来了什么

软件从「大部分时间是坏的」变成「大部分时间是好的」;出了问题,嫌疑范围只有最近这一小步。诚实的代价是:这要靠一整队人长期守纪律——它是一种习惯,不是买个工具装上就有的,而那盏红灯一旦被习惯性无视,整套东西立刻退化成没人看的摆设。

一句话记住

与其攒三个月再痛苦地合一次,不如每天合一次、每次合完当场验一遍;一旦验不过,全组停下来先修好它。软件的默认状态,应该是「它能用」。

想进到具体纪律、时间预算、对比表和示意图? → 切到精读版