简介:在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 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)