Jenkins 版本信息:
version : Jenkins 2.358
安装方式:yum 安装(这里就不赘述怎么安装了)
配置
去到 Jenkins 系统设置 -> 系统配置 -> Global Pipeline Libraries
如图配置几个地方
Groovy 文件介绍
[root@cicd test]# tree -N ./*
./pipeline_test # 这个目录下面的文件一一对应项目,比如有个项目 [testgo]
└── testgo.groovy # 由该文件开始,调用下面的 deploy_front_base.groovy
./sharelibrary # 该目录就是共享库了
├── src
│ └── org
│ └── devops
│ └── otherTools.groovy
└── vars
└── deploy_front_base.groovy
testgo.groovy
/*
首行是导入前面设置好的 Library,**前面图片中的 Default version 我留空**,这里使用 jenkins_lib@main 给动态填上;如果你的分支是 master ,这里就是 **@Library('jenkins_lib@master') _**
然后定义一个 Map,设置需要的 key value。
最后就是调用 deploy_front_base.groovy] 文件,把 Map 传进去使用。
*/
@Library('jenkins_lib@main') _
def runMap = [:]
// 定义项目构建运行的 NODE ,根据实际情况进行调整
runMap.put('RUN_NODE','master')
// 项目名
runMap.put('SERVERNAME', 'hellogo')
deploy_front_base(runMap)
otherTools.groovy
// 这里简单的定义一个函数给 deploy_front_base.groovy 做调用,做个示例
package org.devops
def printMsg(msg) {
println(msg)
}
deploy_front_base.groovy
/*
首行导入 otherTools
然后最外层是一个 call 函数
接下来全篇就是正常的一个 pipeline 声明式写法(脚本式也如此)
*/
import org.devops.otherTools
def call(Map runMap) {
def timeStr=new Date().format('yyyyMMddHHmm')
def mytools = new org.devops.otherTools()
pipeline {
agent {
label runMap.RUN_NODE // 调用 Map 参数里面的值来确定该 Job 跑在哪
}
environment {
serverName = "${runMap.SERVERNAME}" // 设置 pipeline 环境变量,方便下面调用
}
stages {
stage('拉取代码') {
steps {
script {
mytools.printMsg('hello world') // 放在 script {} 里调用
}
sh """
echo "start time :${timeStr}"
echo "pull ${serverName} code"
"""
}
}
stage('构建项目') {
steps {
sh "echo 'build'"
}
}
stage('启动程序') {
steps {
sh "echo 'start'"
}
}
}
}
}
创建 pipeline job
使用 SCM 方式设置
唯一值得说的就是最下面的脚本路径把需要调用的文件名写上
文件名 -> 项目,一一对应
到此,整的一个 Jenkins share library 就配置结束了