DevOps系列之Jenkins pipeline-09Jenkins共享库实践

        共享库这并不是一个全新的概念,其实在编程语言Python中,我们可以将Python代码写到一个文件中,当代码数量增加,我们可以将代码打包成模块然后再以import的方式使用此模块中的方法。

        在Jenkins中使用Groovy语法,共享库中存储的每个文件都是一个groovy的类每个文件(类)中包含一个或多个方法。每个方法包含groovy语句块

        可以在Git等版本控制系统中创建一个项目用于存储共享库。共享流水线有助于减少冗余并保持代码整洁。

具有以下三个属性:

  • 共享库名称
  • 共享库版本
  • 共享库地址

共享库目录结构为:

  • src: 类似于java的源码目录,执行流水线时会加载到class路径中。
  • vars: 存放全局变量脚本,小的功能函数。
  • resources: 存放资源文件,类似于配置信息文件。
├── src
│   └── org
│       └── devops
│           └── tools.groovy
├── vars
│   └── GetHosts.groovy
│   └── GetCommitId.groovy
│           
└── resources
│   └── org
│       └── devops
│           └── config.json

1. 共享库配置

1.1 创建一个共享库

在gitlab上创建一个项目,本文中项目名称为jenkins,自定义即可。 

1.2 创建groovy类文件

新建文件名称:src/org/devops/utils.groovy

文件内容:

package org.devops

// 自定义groovy脚本内容

//打印信息
def PrintMsg(value) {
    println(value)
}

PrintMsg('hello world')

 提交文件到仓库中。

2. 使用共享库

2.1 下载插件

Shared Groovy libraries

2.2 系统配置

打开系统配置 -> Global Pipeline Libraries

        首先,我们为共享库设置一个名称 mylib自定义,无需与gitlab仓库一致),注意这个名称后续在Jenkinsfile中引用。 再设置一个默认的版本,这里的版本是分支的名称。我默认配置的是main版本。(gitlab14版本之后,默认分支是main)

         接下来我们配置共享库的仓库地址,我的仓库在gitlab中。如果仓库是私有的方式,需要在jenkins的凭据中添加一个账号用于下载共享库。

 2.3 使用共享库

在Jenkinsfile中使用 @Library('mylib') _ 来加载共享库,注意后面符号 用于加载。

类的实例化 def mytools = new org.devops.utils(),

使用类中的方法 mytools.PrintMsg(msg)

// def PrintMsg(value){
//     println(value)
// }

@Library('mylib') _

def mytools = new org.devops.utils()


pipeline{
    agent{
        label "build"
    }
    stages{
        stage("checkOut"){
            steps{
                script {
                    msg = "jenkins"
                    mytools.PrintMsg(msg)
                }
            }
        }
    }
}

运行流水线查看测试结果。

 

 2.4 多个共享库配置

// 加载mylib共享库
@Library('mylib') _


// 加载mylib共享库的1.0版本
@Library('[email protected]') _


// 加载多个共享库, mylib共享库的默认版本, yourlib共享库的2.0版本(分支)
@Library(['mylib', '[email protected]']) _

猜你喜欢

转载自blog.csdn.net/lee_yanyi/article/details/124332973