Jenkins共享库的应用

图片

什么是共享库

共享库并不是一个全新的概念,平时我们在写python,java等语言的时候,会引用各种包,比如import xxx from xxx。这里引用的包,其实就和我们今天来学的共享库的一样的。

在Jenkins的共享库中使用Groovy的语法,共享库中存储了Groovy的各种类,每个文件又可以编写各种的方法。

我把这次用到共享库的示例,放在gitee上面,方便大家参考。

共享库的结构

今天我们来完成一个共享库的功能,一般来说,共享库的结构分为可以分为resourcesrcvars。其结构如下:

── resource├── src│   └── org│       └── devops│           └── tools.groovy└── vars

resource可以放一下资源,比如我们部署Kubernetes或者docker的时候,可以把dockerfile放到里面。src是我们放Groovy代码的地方,我们可以建一个src.org.devops的路径,看起来是不是很像java的目录结构。vars,是用来放各种参数文件。当然,其实也不是只有这些,一层目录也可以放诸如doc等文件来放文档。这都根据实际的需要。

开始编写共享库

我们来编写一个共享库的库文件,和使用var文件夹放置一个变量,来演示共享库的基本用法

新建文件src/org/devops/tools.groovy, 在此我将这个文件定义为扩展工具类,和方法。我们这次主要目的是。让输出流水线输出日志的信息,带颜色,这样我们成功的信息可以是绿色,失败的可以是红色,更醒目一些。我们要写一个PrintMes()的方法,接受两个参数valuecolor

注意:我们需要安装 插件AnsiColor,这样才能使用ansiColor()方法,可以在片段生成器查看更多的用法。

在使用这个插件的时候我们可以点击一下插件,查看一下他的文档这里也基本给出了用法。

ansiColor('css') {  sh "ls -al"}
echo 'this will be rendered as-is'// multiple ansiColor steps within one pipeline are also supported
ansiColor('vga') {  echo '\033[42m\033[97mWhite letters, green background\033[0m'}

我们会发现在打印输出颜色的时候,和我们用shell时候的用法一样,没错,这里也是用的ANSI/VT100终端控制转义序列。

接下来我们编写我们的格式化输出的函数

package org.devops
//格式化输出def PrintMes(value,color){    colors = ['red'   : "\033[40;31m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m",              'blue'  : "\033[47;34m ${value} \033[0m",              'green' : "\033[40;32m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m" ]    ansiColor('xterm') {        println(colors[color])    }}

然后我们在var路径下创建一个hello.groovy的文件,我们只输出一个hello

def call(){    println("hello")}

使用共享库

首先我们在系统配置里找到 Global Pipeline Libraries

为共享库设置一个名称jenkins-sharelib-tools,注意这个名称是在Jenkinsfile中引用。再设置一个默认的版本,这里的版本是分支的名称。我默认配置的是main版本。

注意:这里共享库,可以配置多个,根据名字区分

图片

接下来我们配置共享库的仓库地址。

图片

下面我们来编写jenkinsfile

在Jenkinsfile中使用@Library('jenkins-sharelib-tools') _来加载共享库,注意后面符号_用于加载。类的实例化def tools = new org.devops.tools(),使用类中的方法tools.PrintMes("获取代码",'green')

前面我们还创建了一个,var路径下的hello.groovy文件。我们可以直接在script中用hello.call()

#!groovy@Library('jenkins-sharelib-tools') _     def tools = new org.devops.tools()pipeline {    agent { node {  label "master" }}stages {        //下载代码        stage("GetCode"){             steps{                  timeout(time:5, unit:"MINUTES"){                       script{                         tools.PrintMes("获取代码",'green')                        hello.call()                    }                }            }        }    }}

然后我们创建一个pipeline,我们流水线的类型,选择Pipeline script from SCM。我们配置一个gitlab的仓库然后将jenkinsfile放入 

图片

注意, 我们在同一个仓库下可以添加多个jenkinsfile,可以用名字来区分,也可以建多个路径,比如我放到tools路径下面,就需要配置./tools/Jenkinsfile.之前的共享库,其实也可以在org路径下,放多个文件,适用于不同的情况

接下来在你的Jenkins上面运行一下吧,测试一下是否能够看到带有绿色的文字呢?

图片

我们可以看到颜色已经有了,hello也可以正常输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小圆和他的朋友们

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值