程序员

jenkins sharedLibrary

2018-09-29  本文已影响0人  jaymz明

       最近在看《重构》这本书,(希望好心人提供个高清版的pdf,kindle上的体验并不好:(     )里面提到了对代码的优化与重新设计。目前工作上接触到的是script语言比较多,groovy,python,shell...脚本语言小而简单,但是在写pipeline的时候,还是会发现同样的功能多次进行构造,可读性也不是很好。基本上生产的那个人才有overview,其他人看着只知道这一步干了啥,其他的啥也不知道。对于协作的人或者做KT并不直观。在jenkins官网https://jenkins.io/doc/book/pipeline/shared-libraries/#writing-libraries闲逛之余,发现pipeline有个sharedLibrary,大致意思就是可以写个共享的Library,供多个pipeline使用。貌似可以把这些杂乱的脚本整理整理,把共有的方法抽到库里,还支持版本控制,可以单独升级库,与此同时还有点java中AOP的思想。看着挺心动的,决定试一试:下面是参照官网设置的目录结构:主要有三个src, var和sources,src和var的区别目前好像看不出来,都可以写函数,只是调用的方式不一样(题外话:groovy的文件名不严格和它的class名一致),resource里面放的是一些资源文件,就像java加载资源那样一样。

vars中写的脚本如下,后面用到了test这个函数

src目录中文件如下:

然后在jenkins -- manage jenkins -- config system 里修改以下地方。

在pipeline应用的时候很简单,只需要在头部加个@Library(),然后这样就可以直接使用library里的函数了,如果是在src下面的,需要这样def bar = new org.foo.Bar(),如果是vars下面的直接写[文件名.函数名]即可: foo.test(),可参考下方代码:

尝试几波在resources目录下的json文件,发现在当前项目中无法访问,查看官网,解释如下,大致说只能用来加载第三方库的配置文件,对于本library暂不支持。

最终我们把pipeline起起来,查看log就可以发现我们在上面定义的函数都可以正常的运行了。

上一篇下一篇

猜你喜欢

热点阅读