写在前面
今日心情有点小丧,但总体问题不大,有一些突然来的活,还没整完,明天再继续搞把。
有难度吗?
有一些把,我觉得还是要做一些自己不擅长的工作,才会有成长的吧,为什么?
用我们测试同学的话术,就是提升“自己”的“测试覆盖率”,即解决问题的能力,核心就是会了就是赚了!
学习目标
通过本教程,你将学会:
✅ 理解 Jenkins Shared Library 是什么
✅ 创建自己的共享库项目(Git 仓库)
✅ 在 Jenkinsfile 中调用共享库
✅ 实际运行一个示例流水线
✅ 能独立维护公司内部的通用 Jenkins 函数
一、什么是 Jenkins Shared Library?
可以把 Jenkins 比喻成一个“厨师”,而 Shared Library 就是一份“菜谱合集”。
在没有共享库时,每个 Jenkinsfile 都要写重复的步骤,比如:- pipeline {
- agent any
- stages {
- stage('Build') {
- steps {
- sh 'mvn clean install'
- }
- }
- stage('Test') {
- steps {
- sh 'mvn compile test'
- }
- }
- }
- }
复制代码 几百个项目要是都这样写的话,会非常麻烦。
于是我们可以把这些公共逻辑抽取出来放到一个“共享库”里,以后只要一句话就能复用。
也就是可以直接通过方法实现调用:- @Library('my-shared-lib') _
- pipeline {
- agent any
- stages {
- 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 ManagementGitRepository URLhttps://github.com/yourname/jenkins-shared-lib-demo.git保存。
六、在 Jenkinsfile 中使用
在你的项目 Jenkinsfile 写:- @Library('my-shared-lib') _
- pipeline {
- agent any
- stages {
- stage('Say Hello') {
- steps {
- helloWorld('软件测试君')
- }
- }
- }
- }
复制代码 运行后,你会在控制台输出看到:- [Pipeline] echo
- Hello, 软件测试君! Welcome to Shared Library!
复制代码 恭喜!你已经完成了第一个共享库调用!
七、进阶示例(模块化封装)
创建一个更实用的函数,比如构建 Maven 项目:
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |