教程(三)Shared library
前言
随着pipeline流水线技术的成熟,使用pipeline脚本的job也迅速增加。虽然我们可以做一个尽可能通用的pipeline脚本样例,让搭建者只需要
修改几个赋值参数就可以在自己的项目中应用,初衷是希望所有人能理解pipeline中的过程,但也发现一些比较麻烦的问题,比如有些人不熟
悉具体的脚本拿来随意删改导致各种错误,还有就是我们在pipeline脚本中增加一些新功能时又需要通知所有的pipeline维护人员去修改,过
程非常纠结。
这时候就意味着我们需要用到pipline的共享库功能(Shared
Libraries)了,在各种项目之间共享pipeline核心实现,以减少冗余并保证所有job在构建的时候会调用最新的共享库代码 。
这篇我们就介绍下pipeline的这个黑科技:Shared Libraries
目录结构
Shared Library通过库名称、代码检索方法(如SCM)、代码版本三个要素进行定义,库名称尽量简洁,因为它会在脚本中被调用,在编写
Shared Library的时候,我们需要遵循固定的代码目录结构。
Shared Library代码目录结构如下:
src目录就是标准的Java源目录结构。执行Pipeline时,该目录将添加到classpath中。
vars目录托管定义可从Pipeline访问的全局脚本(一般我们可以在这里编写标准化脚本)。 我们在pipeline中调用的指令就是在这里定义的,
这是我们最重要的目录。
resources目录允许libraryResource从外部库中使用步骤来加载相关联的非Groovy文件。也就是我们的pipeline脚本是可以通过一个代码来加
载resource目录下的文件
定义全局库
这里只介绍全局 Shared Library的方式,通过Manage Jenkins » Configure System » Global Pipeline Libraries
的方式可以添加一个或多个共享库。
这些库将全局可用,系统中的任何Pipeline都可以利用这些库中实现的功能。并且通过配置SCM的方式,可以保证在每次构建时获取到指定Sh
ared Library的最新代码。