Jenkins基于Share Library共享库的最佳实践探索
古代治学总结有人生三境界,在我看来,Jenkins 使用接入亦有三个阶段,这也是每一个运维人员应用 Jenkins 所必须要经历的。
第一阶段:初接触,有很多不熟悉不了解,应用场景也大多是依赖手工点点点维护的 free style 或者 maven 风格的项目,通过配置一些参数,结合脚本进行项目的构建与发布。这种维护方式其实也是 Jenkins 在 1.0 时代的普遍使用姿势。它的最大弊端在于一切参数都要配置化,当维护的项目数量增多的时候,又遇到某些普遍性需要更改的地方,那么维护起来就是一场灾难了。
第二阶段:慢慢往后深入,接触越来越多,逐渐开始了解 pipeline,亦即 Jenkins 在 2.0 时代提出的一个新概念:配置即代码,或者说代码即配置。我们可以不必点点点勾选过多地配置项,只需通过代码定义即可实现相同的效果。只不过据我了解,很多人在这个阶段,因为对流水线基础语法掌握程度不够,因此还有很多人是手工配置参数,然后再结合 Jenkinsfile 来进行构建发布的,其实这种方式,并没有真正体悟到 2.0 的设计精髓,自然也无法吃到这波技术红利了。
第三阶段:你不应该满足于维护大量 Jenkinsfile 的现状中,过多的 Jenkinsfile 就像一个又一个肥大的肿块儿一般,对于后期的二次维护,都是极大的挑战。你可能听过共享库,渐渐你开始了解共享库,尝试共享库,最后将同一个类别的 Jenkinsfile 进行逻辑抽象,每个项目都变成了另外一种变相的参数化构建,从而接入项目只需配置对应的 引导文件 即可,这种方式能够极大地简化 Jenkins 的运维使用难度,对项目交付效率的提升有极大的帮助。
过往的 Jenkins 文章中,我已经写过不少第一阶段,第二阶段的概念或者实践,今天这篇文章,将会针对第三阶段的内容,结合以往的实践,手摸手教会你共享库最佳实践这堂课。
