为了避免相同的代码不同的Jenkins pipeline中重复写,我们可以使用Jenkins Shared Library。
什么是Shared Library?
Shared library是一个个独立的groovy脚本的集合,这些脚本可以在你的Jenkinsfile中运行。最好是把这个共享库放在git仓库中,这要你可以对它进行版本管理。
在Jenkins中有两种方法去添加 Shared Library:一和是从 Manage Jenkins上添加,一种是在文件夹中添加。第一种添加后是全局可用,第二种添加后是在这个文件夹里的Jenkins job可用。
在一个Shared Library中有些什么呢?
一般来说在你的共享库中有两种公共的代码:
Steps: 在Jenkins中这些相当于是全局方法,是用户自定义的可以在你的 Jenkins pipelines中直接运行的全局方法。
比如, 你想要创建一个标准的 step去创建一个container, 这时,你可以把代码放在文件vars/CreateContainer.groovy 并以下面这种方式实现它
def call() { // 创建一个MySQL的Container},在pipeline中可以直接调用CreateContainer()
其他类型: helper classes, common function . static constants; 这些代码可以放在src/your/package/name路径, 然后用Groovy 语法实现它:
#!/usr/bin/env groovy// com/cleverbuilder/GlobalVars.groovypackage com.cleverbuilder
class GlobalVars {
static String foo = "bar"}
然后你就可以在你的Jenkinsfile 中import GlobalVars.foo变量。
代码示例:
@Library("###-PipelineLibraries@master") _
pipeline {
agent none
options {
buildDiscarder(logRotator(numToKeepStr: '5'))
timestamps()
}
stages {
stage('P