当有大量的pipeline项目构建任务,有很多代码是重复的,这时需要提取和复用共同的逻辑。 其实pipeline本质就是一个Groovy脚本,所以可以在pipeline中自定义函数,并使用Groovy语言自带的特性。
mkdir -p resources/org/foo src/org/foo vars
(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
vars 目录下的全局变量可以直接在pipeline中使用,即当写sayHello('world'),实际调用的是sayHello.groovy中的call函数
src 目录是标准的Java源码结构,目录中的类被称为类库(Library class),而 @Library('global-shared-library@master') 就是一次性静态加载src目录下所有代码到classpath中
resources目录中是静态资源文件
写shared library
在目录vars中的文件就能够在pipeline中引用
如:
// vars/sayHello.groovy
def call(String name = 'human') {
// Any valid steps can be called from this code, just like in other
// Scripted Pipeline
echo "Hello, ${name}."
}
将该文件目录提交至Git(SVN等)仓库
Manage Jenkins ==> Configure System ==>Global Pipeline Libraries点击Add添加Global Pipeline Libraries.
Name属性不应太长,在pipeline中是通过关键字library加Name属性来引用library, 然后添加shared library的SCM信息.
在Jenkins文件中添加library关键词引用shared library,如下所示:
Jenkinsfile
@Library('global-shared-library@master') _
pipeline {
agent any
stages {
stage('Build') {
steps {
sayHello('World')
}
}
}
}
https://jenkins.io/doc/book/pipeline/shared-libraries/
http://groovy-lang.org/single-page-documentation.html
https://www.jianshu.com/p/cc32441ae3b6
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。