美文网首页
Jenkins Shared Libraries

Jenkins Shared Libraries

作者: 87d6dc4b11a7 | 来源:发表于2022-01-14 09:21 被阅读0次

Jenkins Shared Libraries

流水线支持创建 "共享库" ,可以在外部源代码控制仓库中定义并加载到现有的流水线中。
目录结构:

(root)
+- src                     # Groovy source files
|   +- org
|       +- foo
|           +- Bar.groovy  # for org.foo.Bar class
+- vars
|   +- foo.groovy          # for global 'foo' variable
|   +- foo.txt             # help for 'foo' variable
+- resources               # resource files (external libraries only)
|   +- org
|       +- foo
|           +- bar.json    # static helper data for org.foo.Bar

src 目录像标准的 Java 源目录结构。当执行流水线时,该目录被添加到类路径下。
vars目录定义可从流水线访问的全局变量的脚本。文件的名称是Pipeline中变量的名称。如果有一个叫vars/log.groovy的文件中有一个def info(message)…函数,我们可以在Pipeline中通过log.info "hello world"来访问这个函数。同时可以在文件中定义多个函数。

定义全局变量
vars/log.groovy
def info(message) {
    echo "INFO: ${message}"
}

def warning(message) {
    echo "WARNING: ${message}"
}

Jenkins配置

进入"系统管理—系统配置—Global Pipeline Libraries"进行配置。

在流水线中使用Libraries

#使用全局变量/方法 (从 vars/ 目录):
@Library('my-shared-library') _
/* Using a version specifier, such as branch, tag, etc */
@Library('my-shared-library@1.0') _
/* Accessing multiple libraries with one statement */
@Library(['my-shared-library', 'otherlib@abc1234']) _

#当引用类库时 (在 src/ 目录下), 通常需要 import 语句:
@Library('somelib')
import com.mycorp.pipeline.somelib.UsefulClass

编写Jenkinsfile

node('openjdk8') {
    @Library('jenkins_library') _

    log.info 'Starting'
    log.warning 'Nothing to do!'
}
@Library('jenkins_library') _

pipeline {
    agent {label 'openjdk8'}
    stages {
        stage ('Example') {
            steps {
                script { 
                    log.info 'Starting'
                    log.warning 'Nothing to do!'
                }
            }
        }
    }
}

执行该流水线,jenkins日志如下所示

······
2022-01-13 19:32:06.437 | . Running on openjdk8-l59ll in /home/jenkins/agent/workspace/test-library
2022-01-13 19:32:06.473 | . [Pipeline] {
2022-01-13 19:32:06.707 | . [Pipeline] echo
2022-01-13 19:32:06.723 | . INFO: Starting
2022-01-13 19:32:06.784 | . [Pipeline] echo
2022-01-13 19:32:06.787 | . WARNING: Nothing to do!
2022-01-13 19:32:06.793 | . [Pipeline] }
2022-01-13 19:32:06.818 | . [Pipeline] // node
2022-01-13 19:32:06.837 | . [Pipeline] End of Pipeline
2022-01-13 19:32:06.861 | . Finished: SUCCESS

相关文章

网友评论

      本文标题:Jenkins Shared Libraries

      本文链接:https://www.haomeiwen.com/subject/rfhvqrtx.html