jenkins sharedLibrary

       最近在看《重构》这本书,(希望好心人提供个高清版的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就可以发现我们在上面定义的函数都可以正常的运行了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工作日常系列文章-论理论知识在大、小公司的价值体现 上篇文章 持续交付-目标 Jenkins官网 Jenkins下...
    适合自己的最好阅读 5,257评论 2 18
  • 种一颗树最好的时间是十年前,其次是现在。 很多事情,越早行动越好。 比如学习、买房、护肤、协和妇产科副教授张羽说生...
    桃酥1618阅读 414评论 0 1
  • 从你开始不认识我的那天起,我就已经意识到了,但没想到还是那么快,最近几天一直睡得很不安稳,每天只能睡几个小时,半...
    xiaoyuxiaoyuya阅读 197评论 0 1
  • “被狗咬”之二 野狗不光咬人,还到处乱拉屎。 早上送小家伙去上学。他走在我前面,一路蹦蹦跳跳走着Z字型路线。而我在...
    fivedang阅读 269评论 0 0