简介:在Jenkins中使用Groovy语法,共享库中存储的每个文件都是一个groovy的类,每个文件(类)中包含一个或多个方法。每个方法包含groovy语句块。
1.gitlab创建共享库:
库结构:
src: 类似于java的源码目录,执行流水线时会加载到class路径中。
vars: 存放全局变量脚本,小的功能函数。
resources: 存放资源文件,类似于配置信息文件。

2.jenkins共享库定义
系统管理--系统配置--Global Pipeline Libraries

3.共享库使用
加载共享库:@Library("mylib@main") _
加载多个分支:@Library("mylib","mylib2@1.0") _

流水线使用共享库:

部分代码:
jenkinsfile
@Library("mylib@main") _ //加载共享库
import org.devops.* // 导入库
def checkout = new Checkout() //New实例化
def build = new Build()
def unittest = new UnitTest()
def sonarscan = new SonarScan()
//env.buildType = "${JOB_NAME}".split("-")[1]
//流水线
pipeline {
agent { label "build" }
options {
skipDefaultCheckout true
}
stages{
stage("Checkout"){
steps{
script {
println("---------------GetCode----------------------")
checkout.GetCode("${env.srcUrl}", "${env.branchName}")
}
}
}
stage("Build"){
steps{
script{
println("++++++++++++++++++++++++Build++++++++++++++++++++++")
build.CodeBuild("${env.buildType}")
//sh "${env.buildShell}"
}
}
}
/*stage("UnitTest"){
steps{
script{
unittest.CodeTest("${env.buildType}")
}
}
}*/
stage("sonarscan"){
steps{
script{
println("--------------------sonarscan--------------------------")
sonarscan.CodeScan("${env.branchName}")
}
}
}
}
}
build.groovy
package org.devops def MavenBuild(){ sh "/usr/local/maven/bin/mvn clean package" } def GradleBuild(){ sh "/usr/local/gradle/bin/gradle build" } def NpmBuild(){ sh "npm install && npm run build" } def YarnBuild(){ sh "yarn" } def CodeBuild(type){ switch(type){ case "maven": MavenBuild() break; case "gradle": GradleBuild() break; case "npm": NpmBuild() break; case "yarn": YarnBuild() break; default: error "No such tools ... [maven/ant/gradle/npm/yarn/go]" break } }