论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
大数据
›
数据仓库与分析
›
Jenkins 共享库(Shared Libraries)利用阐明文档 ...
Jenkins 共享库(Shared Libraries)利用阐明文档
张国伟
论坛元老
|
2025-3-26 10:30:53
|
显示全部楼层
|
阅读模式
楼主
主题
1562
|
帖子
1562
|
积分
4686
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
插件概述
共享库(Shared Libraries) 是 Jenkins 的核心功能(非独立插件),用于在多个 Jenkins Pipeline 项目中复用公共代码(如函数、变量、步骤等)。通过将通用逻辑封装到共享库中,可以实当代码的集中管理和维护,提升 CI/CD 流程的效率和同等性。
安装与设置
前置条件
Jenkins 版本 ≥ 2.0(支持 Pipeline 功能)。
无需单独安装插件,但需设置共享库堆栈。
全局设置
进入 Manage Jenkins > System Configuration > Global Pipeline Libraries。
点击 Add,填写以下信息:
Library Name:库的唯一标识(如 company-ci-lib)。
Default Version:默认分支或标签(如 main)。
Retrieval Method:选择堆栈类型(Git、SVN 等)。
Repository URL:共享库代码堆栈地址(如 GitLab/GitHub URL)。
基本利用方法
目次布局
共享库的标准目次布局如下:
src/
└── com/
└── company/
└── utils/
└── BuildUtils.groovy # 自定义工具类
vars/
└── deployK8s.groovy # 全局变量/方法 vars里面的方法只要在pipeline中加载后即可直接使用
resources/
└── scripts/
└── cleanup.sh # 静态资源文件,这些文件需要经过静态
└── pythonLibrary/ # pyhon文件脚本文件
复制代码
在 Pipeline 中引用
在 Jenkinsfile 头部声明共享库:
@Library('company-ci-lib@1.0') _ // 指定库名称和版本
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
// 调用共享库中的方法
com.company.utils.BuildUtils.compileJava()
}
// 调用共享库中定义的全局变量
deployK8s()
}
}
}
}
复制代码
定义全局方法示例
在 vars/deployK8s.groovy 中编写:
def call(Map config) {
sh """
kubectl set image deployment/${config.deployment} \
${config.container}=${config.image}:${config.tag}
"""
}
复制代码
插件的优缺点
长处
代码复用性高
将重复逻辑(如构建、部署)抽象为共享方法,减少代码冗余。
支持跨团队、跨项目复用,同一技术栈和流程规范。
维护便捷
修改共享库代码即可同步更新所有引用它的 Pipeline。
支持版本控制,可回滚到特定汗青版本。
灵活性
支持 Groovy 动态编程,可封装复杂逻辑(如多环境部署、动态参数处理)。
提供静态资源管理(如脚本、设置文件)。
安全性增强
将敏感操作(如凭据管理)封装到共享库中,避免 Pipeline 直接袒露细节。
缺点
学习本钱高
需要认识 Groovy 语法和 Jenkins Pipeline 模型。
调试困难
共享库代码错误可能导致多个 Pipeline 失败,需结合日志和单元测试排查。
版本管理复杂
若未显式指定版本,默认分支变更可能引发不测题目。
性能开销
频仍拉取共享库堆栈可能增加构建时间(可通过缓存优化)。
现实利用场景
场景 1:标准化构建流程
题目:多个项目需执行相同的构建步骤(如 Java Maven 构建、Node.js 打包)。
解决方案:将构建逻辑封装到共享库中,各项目通过一行代码调用。
场景 2:同一部署逻辑
题目:多团队需部署到 Kubernetes,但 YAML 设置和命令不同一。
解决方案:在共享库中定义 deployK8s() 方法,强制利用标准参数和流程。
场景 3:跨环境设置管理
题目:测试、预发布、生产环境需动态切换设置。
解决方案:通过共享库加载不同环境的设置文件,避免硬编码。
场景 4:复杂工具链集成
题目:需集成代码扫描、安全检测、关照等工具。
解决方案:将工具调用封装为共享库方法,简化 Pipeline 代码。
最佳实践与注意事项
代码规范
遵照模块化设计,按功能拆分目次(如 src 存放工具类,vars 存放 Pipeline 步骤)。
添加文档解释,阐明方法用途和参数。
版本控制
为共享库打标签(如 1.0-stable),Pipeline 显式指定版本以避免不测升级。
单元测试
利用 Jenkins Pipeline Unit 框架测试共享库逻辑。
资源清理
避免在共享库中硬编码绝对路径,利用 resources/ 目次存储脚本。
错误处理
在共享库方法中添加 try-catch 块,返回明白错误信息。
性能优化
在 Jenkins 节点缓存共享库堆栈,减少拉取时间。
结语
Jenkins 共享库是提升 CI/CD 代码复用性和可维护性的核心机制,尤其实用于中大型团队和复杂流水线场景。合理利用时,可明显降低维护本钱并增强流程同等性,但需注意版本控制和代码质量。发起结合代码审查和自动化测试,确保共享库的稳固性和可靠性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
张国伟
论坛元老
这个人很懒什么都没写!
楼主热帖
XAF新手入门 - 类型子系统(Types Info ...
MyBatis 查询数据库
JAVA 装箱拆箱--到底指什么呢? ...
[NOI2010] 航空管制
ThinkPHP5 远程命令执行漏洞
HarmonyOS(鸿蒙)开发一文入门 ...
RabbitMQ入门 -- 阿里云服务器安装Rabb ...
基于 Dubbo Admin 实现同机房/区域优先 ...
浅入浅出 1.7和1.8的 HashMap
Prometheus配置Basic Auth进行安全防护 ...
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表