ios 重复引用 静态库_Jenkins 共享库使用示例

如果你经常使用 Jenkins Pipeline 一定会遇到多个不同流水线中有大量重复代码的情况,很多时候为了方便我们都是直接复制粘贴到不同的管道中去的,但是长期下去这些代码的维护就会越来越麻烦。为了解决这个问题,Jenkins 中提供了共享库的概念来解决重复代码的问题,我们只需要将公共部分提取出来,然后就可以在所有的 Pipeline 中引用这些共享库下面的代码了。

7a9a8cea4616ceac9b3db49559dd1c38.png

共享库是什么?

共享库(shared library)是一些独立的 Groovy 脚本的集合,我们可以在运行 Pipeline 的时候去获取这些共享库代码。使用共享库最好的方式同样是把代码使用 Git 仓库进行托管,这样我们就可以进行版本化管理了。当然我们也需要一些 Groovy 语言的基础,不过并不需要多深入,基本的语法概念掌握即可,可以查看前面我们的 Groovy 简明教程 。

使用共享库一般只需要3个步骤即可:

  • 首先创建 Groovy 脚本,添加到 Git 仓库中

  • 然后在 Jenkins 中配置将共享库添加到 Jenkins 中来

  • 最后,在我们的流水线中导入需要使用的共享库: @Library('your-shared-library'),这样就可以使用共享库中的代码了。

共享库内容

在共享库中一般会有两种通用的代码:

  • Steps:这些 Steps 在 Jenkins 中被称为全局变量,我们可以在所有的 Jenkins Pipeline 中使用这些自定义的 Steps。

比如,我们可以编写一个标准的 Step 来部署应用或者发送消息通知等,我们就可以将代码添加到 vars/YourStepName.groovy 文件中,然后实现一个 call 函数即可:

#!/usr/bin/env groovy// vars/YourStepName.groovydef call() {  // Do something here...}
  • 其他通用代码:我们可以在这里面添加一些帮助类,还可以定义整个流水线中使用的静态常量等。

这些代码需要放在 src/your/package/name 目录下面,然后就可以使用常规的 Groovy 语法了,例如:

#!/usr/bin/env groovy// com/qikqiak/GlobalVars.groovypackage com.qikqiakclass GlobalVars {   static String foo = "bar"}

我们可以在 Jenkins Pipeline 中使用 import 导入上面的类,并引用其中的静态变量,比如 GlobalVars.foo

示例

新建一个名为 pipeline-library-demo 的文件夹,将该项目加入到 Git 仓库中。首先创建一个名为 vars 的目录,自定义一个 step 就是在 vars 目录下面的一个 .groovy 文件,这些被称为全局变量,比如我们添加一个 sayHi.groovy 的文件,代码如下所示:

#!/usr/bin/env groovydef call(String name='QIKQIAK') {  echo "Hello, ${name}."}

需要注意的是需要实现 call 方法,添加了一个名为 name 的参数,具有默认值 QIKQIAK,可以用 ${name} 来进行访问。

然后创建一个名为 src/com/qikqiak/GlobalVars.groovy 的文件,文件内容如下所示:

#!/usr/bin/env groovypackage com.qikqiakclass GlobalVars {  static String foo = "bar"  // 在 Pipeline 中可以引用这里的静态变量:  //   // import com.qikqiak.GlobalVars  // println GlobalVars.foo}

完整的代码目录如下所示:

$ tree ..├── README.md├── src│   └── com│       └── qikqiak│           └── GlobalVars.groovy└── vars    └── sayHi.groovy4 directories, 3 files

完整的代码上传到了 GitHub 仓库 https://github.com/cnych/pipeline-library-demo 中。

共享库创建完成后,我们需要让 Jenkins 知道这个共享库,我们可以从 Jenkins 的 Web 页面进行添加。在 Jenkins 首页 -> 系统管理 -> 系统配置,在 GlobalPipelineLibraries 区域配置共享库:

e9ae3689fb28b28ad55c8f4b1d2265e7.png

保存后即可使用配置共享库。接下来新建一个名为 share-lib-demo 的流水线项目,在 Pipelinescript 区域添加如下代码:

@Library('pipeline-library-demo')_import com.qikqiak.GlobalVarsstage('Demo') {    echo 'Hello world'    sayHi '阳明'    println GlobalVars.foo}

78ba12cc865992deea824343b34118ac.png

需要注意的是 @Library('pipeline-library-demo')_ 最后有一个下划线 _,这个下划线并不是写错了,如果 @Libray 后面紧接的一行不是 import 语句的话,就需要这个下划线,我们这里后面就是一条 import 语句,所以这里可以省略这个下划线。

配置完成后,构建这个 Pipeline,正常就可以看到如下所示的构建结果:

2f7ea9188894850364eae5da6b45fef3.png

这样我们就完成了一个共享库的编写。


K8S 进阶训练营,点击下方图片了解详情

9afb98c195972b438d43aacc147d79d4.png52742def99837ccd8e262c549abe2959.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值