当前位置: 首页 > news >正文

Jenkins Share Library教程 —— 开发入门

写在前面

今日心情有点小丧,但总体问题不大,有一些突然来的活,还没整完,明天再继续搞把。

有难度吗?

有一些把,我觉得还是要做一些自己不擅长的工作,才会有成长的吧,为什么?

用我们测试同学的话术,就是提升“自己”的“测试覆盖率”,即解决问题的能力,核心就是会了就是赚了!

学习目标

通过本教程,你将学会:

✅ 理解 Jenkins Shared Library 是什么
✅ 创建自己的共享库项目(Git 仓库)
✅ 在 Jenkinsfile 中调用共享库
✅ 实际运行一个示例流水线
✅ 能独立维护公司内部的通用 Jenkins 函数


一、什么是 Jenkins Shared Library?

可以把 Jenkins 比喻成一个“厨师”,而 Shared Library 就是一份“菜谱合集”。

在没有共享库时,每个 Jenkinsfile 都要写重复的步骤,比如:

pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean install'}}stage('Test') {steps {sh 'mvn compile test'}}}
}

几百个项目要是都这样写的话,会非常麻烦。

于是我们可以把这些公共逻辑抽取出来放到一个“共享库”里,以后只要一句话就能复用。

也就是可以直接通过方法实现调用:

@Library('my-shared-lib') _
pipeline {agent anystages {stage('Build & Test') {steps {myPipeline.buildAndTest()}}}
}

这样,所有项目就能共享一套逻辑,方便统一管理和维护。


二、准备环境

你需要的环境
工具说明
Jenkins版本 >= 2.3(最好用 LTS)
Git版本管理工具
一个 Git 仓库用来存放共享库代码(GitHub / GitLab 都行)

三、创建共享库项目

在你的 Git 仓库中新建项目,例如:

https://github.com/yourname/jenkins-shared-lib-demo

项目结构如下:

jenkins-shared-lib-demo/
├── vars/
│   └── helloWorld.groovy
├── src/
│   └── org/example/Utils.groovy
└── resources/└── templates/email.txt

四、编写第一个共享函数

新建文件:vars/helloWorld.groovy

def call(String name = 'Jenkins') {echo "Hello, ${name}! Welcome to Shared Library!"
}

解释:

  • vars/ 目录下的每个 .groovy 文件会自动变成一个全局函数。
  • 文件名 helloWorld.groovy 就对应函数名 helloWorld()
  • def call(...) 是约定写法,表示默认执行逻辑。

五、在 Jenkins 中配置共享库

1️⃣ 打开 Jenkins → “系统管理” → “系统配置”
2️⃣ 滚动到 “Global Pipeline Libraries(全局流水线库)”

点击 “Add” 新建一条:

字段
名称my-shared-lib(后面要引用这个名字)
Default versionmain(你的 Git 默认分支)
Source Code ManagementGit
Repository URLhttps://github.com/yourname/jenkins-shared-lib-demo.git

保存。


六、在 Jenkinsfile 中使用

在你的项目 Jenkinsfile 写:

@Library('my-shared-lib') _
pipeline {agent anystages {stage('Say Hello') {steps {helloWorld('软件测试君')}}}
}

运行后,你会在控制台输出看到:

[Pipeline] echo
Hello, 软件测试君! Welcome to Shared Library!

恭喜!你已经完成了第一个共享库调用!


七、进阶示例(模块化封装)

创建一个更实用的函数,比如构建 Maven 项目:

📁 vars/buildApp.groovy

def call(Map config = [:]) {stage('Build') {sh 'mvn clean install'}stage('Test') {sh 'mvn compile test'}if (config.deploy == true) {stage('Deploy') {echo "Deploying to ${config.env ?: 'staging'}..."}}
}

然后 Jenkinsfile:

@Library('my-shared-lib') _
pipeline {agent anystages {stage('CI Flow') {steps {buildApp(env: 'prod', deploy: true)}}}
}

八、实践练习

练习 1:

编写一个 notifySlack.groovy,当构建失败时自动通知 Slack。

提示:

def call(String message) {echo "Send Slack notification: ${message}"
}
练习 2:

src/org/example/Utils.groovy 编写工具类:

package org.exampleclass Utils {static String getTimestamp() {return new Date().format("yyyy-MM-dd HH:mm:ss")}
}

然后在 Jenkinsfile 调用:

@Library('my-shared-lib') _
import org.example.Utilspipeline {agent anystages {stage('Show Time') {steps {echo "Current time: ${Utils.getTimestamp()}"}}}
}

运行后,你会在控制台输出看到:


九、共享库版本管理

在企业项目中,你通常会:

  • 使用 Git tag 来发布共享库版本(例如 v1.0.0
  • 在 Jenkinsfile 中固定使用特定版本:
@Library('my-shared-lib@v1.0.0') _

这样能防止库更新影响旧项目。


恭喜你 ,到此Jenkins Share Library开发就算入门了。

写在最后

改一改自己懒惰的毛病,学起来,顺便也锻炼下自己的写作能力,没有什么华丽的辞藻了,只剩下热诚地坚持了!

最后,感谢您的观看,如文章对您有帮助,老规矩,点赞转发就哦了,如有疑问,欢迎文末留言交流!

http://www.dtcms.com/a/478600.html

相关文章:

  • SpringBoot读取自定义格式的Nacos配置
  • WordPress建站怎么交付青岛seo网络推广
  • 江西个人网站备案小制作小发明简单做法
  • 在Qt中实现SwitchButton(开关按钮)
  • day9_elementPlus2
  • qiankun子应用使用elementUI操作反馈图标不显示
  • Vue3.0: v-model 组件双向绑定学习文档 (v3.4 前后对比 + TypeScript)
  • 中山哪里有做微网站的做ppt图片用的网站
  • 『 QT 』QT窗口坐标体系详解
  • 服务器里怎么建设网站网站开发网站设计素材
  • 从多个数据源(CSV, Excel, SQL)自动整合数据
  • 智慧零售天气预知可视化监控平台
  • C++设计模式_结构型模式_享元模式Flyweight
  • 网站备案名称能重复吗微官网怎么制作
  • SpringBoot + MyBatis 注解开发入门实践
  • Java EE初阶--多线程
  • 深入理解梯度消失:从DNN到RNN的全面解析与解决方案
  • 南京电子商务网站开发公司石油化工工程建设人才招聘网站
  • 大数据实战:Python+Flask 汽车数据分析可视化系统(爬虫+线性回归预测+推荐 源码+文档)✅
  • 算法8.0
  • 网站左侧导航栏设计一个网站的建设要经过哪几个阶段
  • Java-Linux环境下查看JDK安装路径
  • 嘉立创学习
  • QML学习笔记(三十四)QML的GroupBox、RadioButton
  • AI Agent 的技术架构、产业赋能与治理挑战研究 —— 基于 2024-2025 年技术突破与应用实践的分析
  • 设计美观网站有哪些辽宁网站建设价位
  • vtkFillHolesFilter——3D网格补孔的“一键修复”工具,从原理到避坑
  • 网站建设完整代码深圳开公司流程及费用
  • Vue3为什么选择用Vite?使用指南与优势解析
  • 【STL】set容器(2336.无限集中的最小数字)