开篇闲话
长期以来,笔者都在从事Android端上Apps的研发类工作,关注的重点,大多也都是在Android应用的功能实现、性能优化以及业务数据分析方面。
在加入现在这个团队之前,对于CI(Continuos Integration)持续集成的概念,笔者还停留在“开发机编译通过后,用jenkins在服务器上再执行一遍"的概念。而真正开始参与这项业务之后,才发现持续集成业务远远比简单的“编译-打包-发布”要来得复杂的多。
持续编译作为现代软件工程的附加概念之一,属于不折不扣舶来品。因此,也同样如《人月神话》中对软件工程的理解认知类似,即没有一个所谓包治百病的“银弹”能够解决实际工程中的一切问题——同样没有一种完美的CI手段,能够解决所有工程中所遇见的集成问题。
好的持续编译环境应该如精心培养的花卉植株一般,严格遵循者设计者对于工程项目的理解,将实际工程中所遇见的种种问题分拆解析,再按照合理的软件工程标准组装成最有工程效率的工具平台。
因此,笔者的初衷并非想像大部分常见的对Jenkins、Docker等工具的使用介绍,亦或是对软件工程理论的理论介绍的文章那样,对或是具体工具使用、或是理论概念进行一一剖析。在这里,笔者更想做一个自己时对于如何针对真实场景业务进行功能拆解