如何实现从本地目录加载Jenkins共享库?
如何从本地目录加载Jenkins共享库?
核心思路
官方支持的http/nexus/legacySCM/modernSCM共享库检索器都需要先打包或提交至代码仓库,在开发测试阶段反复操作太繁琐。本质上所有检索器最终都是把共享库文件放到Jenkins可访问的目录,所以我们可以直接让Jenkins读取本地目录的共享库,实现修改后直接触发流水线测试,无需额外打包/提交操作。
实现方法
方法一:全局配置(推荐长期使用)
通过Jenkins全局配置添加本地目录作为共享库源,所有流水线都能直接引用:
- 进入Jenkins管理后台 → 「系统管理」→ 「全局流水线库」
- 点击「添加」,填写共享库的名称(比如
local-shared-lib,后续流水线用这个名称引用) - 检索方法选择「现代SCM(modernSCM)」
- SCM类型选择「文件系统(FileSystem SCM)」,填入Jenkins服务器上的共享库本地绝对路径(例如
/opt/jenkins-shared-lib) - 「默认版本」可留空(本地目录直接读取当前内容),完成后保存配置
在流水线脚本中引用该共享库:
@Library('local-shared-lib') _ // 这里可以直接调用共享库中的方法,比如: mySharedLibMethod()
方法二:单流水线临时引用(适合临时测试)
不想修改全局配置的话,可以在单个流水线脚本中直接指定本地目录加载:
// 直接加载指定本地目录的共享库 library identifier: 'local-lib@', retriever: modernSCM(scm: fileSystemSCM('/opt/jenkins-shared-lib')) // 调用共享库方法 mySharedLibMethod()
注意事项
- 确保Jenkins运行进程的用户(通常是
jenkins用户)对目标本地目录拥有读取权限,否则会出现加载失败的权限错误 - 本地共享库要遵循Jenkins共享库的标准目录结构:
vars/(存放全局变量/方法脚本)、src/(存放类文件),否则Jenkins无法识别
内容的提问来源于stack exchange,提问作者Iresh Dissanayaka
相关产品推荐
相关产品推荐

