通常情况下多个流水线项目需要使用相同的功能,流水线支持创建 “共享库” ,把这些公共的方法类定义在一个仓库中,使多个pipeline项目可以共享这些库,这有助于减少代码冗余。

目录

  • Pipeline 共享库定义
    • 目录结构
    • 创建共享库
    • 配置 Global Shared Libraries
      • SVN库配置
      • GitHub库配置
  • 使用共享库

下面来介绍Jenkins如何配置和使用Pipeline共享库。

Pipeline 共享库定义

共享库(shared library)是一些 Groovy 脚本的集合,可以在外部源代码控制仓库(Git 或者Subversion)中托管Pipeline共享库。配置好共享库之后,可以在Pipeline项目中对它进行调用。

目录结构

将共享库放到SVN或者Git服务器上,其目录结构如下:

(root)
+- src                     # Groovy source files
|   +- org
|       +- foo
|           +- Bar.groovy  # for org.foo.Bar class
+- vars
|   +- foo.groovy          # for global 'foo' variable
|   +- foo.txt             # help for 'foo' variable
+- resources               # resource files (external libraries only)
|   +- org
|       +- foo
|           +- bar.json    # static helper data for org.foo.Bar

src 目录和标准的Java源代码目录一样,主要提供类库,存放具体实现方法。

vars 目录存放脚本文件的变量可以在pipeline中使用,也就是全局变量,文件的名称是Pipeline中变量的名称。

resources 目录存放一些配置文件,允许从外部库使用 libraryResource 步骤来加载相关的非groovy文件。目前,内部库不支持此功能。

创建共享库

目录结构如下

\---1.0+---resources+---src|   \---com|       \---hiyongz|               MyLib.groovy|\---varslog.groovy

MyLib.groovy脚本内容:

// 获取时间 格式:20201208200419
def getTime() {return new Date().format('yyyy-MM-ddHHmmss')
}def getJenkinsHome(){return "${JENKINS_HOME}";

log.groovy脚本:

def info(message) {echo "INFO: ${message}"
}

配置 Global Shared Libraries

进入Manage Jenkins » Configure System » Global Pipeline Libraries,点击Add

下面介绍SVN和GitHub两种共享库配置方法。

SVN库配置

SVN源码库svn://192.168.30.8/project/pipelinelibs 下存放上面介绍的共享库。

GitHub库配置

也可以将共享库放到github上,路径为 DevTest-Notes/CI/jenkins/pipelinelib/pipelinelibs/

和SVN配置方法类似,选择GitHub

其它Git仓库配置方法类似。

使用共享库

配置好共享库后就可以在pipeline中调用其中提供的方法了,新建一个pipeline库,脚本如下:

// @Library('pipelinelibs@1.0') _  // SVN库
@Library('pipelinelibs2@main') _  // Github库
import com.hiyongz.MyLibdef mylib = new MyLib();println mylib.getTime();
println mylib.getJenkinsHome();
log.info "中文"

上述脚本中的下划线 _可以省略,如果 @Libray 后面紧接的一行不是 import 语句,就需要这个下划线。

构建日志如下:

[Pipeline] Start of Pipeline
[Pipeline] echo
2022-02-12 20:30:23
[Pipeline] echo
/var/jenkins_home
[Pipeline] echo (hide)
INFO: 中文

参考文档:

  1. https://www.jenkins.io/doc/book/pipeline/shared-libraries/

  2. https://www.jenkins.io/zh/doc/book/pipeline/shared-libraries/

--THE END--

疾如风,徐如林,侵略如火,不动如山,难知如阴,动如雷霆。——《孙子兵法》

持续集成:Jenkins Pipeline共享库定义和使用相关推荐

  1. 自动化持续集成Jenkins

    自动化持续集成Jenkins 使用Jenkins配置自动化构建 http://blog.csdn.net/littlechang/article/details/8642149 Jenkins入门总结 ...

  2. 持续集成Jenkins+Gitlab

    2019独角兽企业重金招聘Python工程师标准>>> 持续集成Jenkins+Gitlab 请叫我大宝贝 0.1 2018.04.21 15:11* 字数 1203 阅读 760评 ...

  3. 持续集成~Jenkins构建GitHub项目的实现

    有了前两讲的基础,这回我们就可以把github上的项目做到CI(jenkins)里了,让它自动去集成部署,持续集成~Jenkins里的NuGet和MSBuild插件,持续集成~Jenkins里的pow ...

  4. 持续集成 -- Jenkins + Slack 配置

    2017.12.13 始发于TesterHome 持续集成 Jenkins + Slack 配置 Why Slack? Slack支持很多平台和工具,接起来方便快捷:可在移动端/PC缎端同步查看:通知 ...

  5. 持续集成Jenkins大法好

    持续集成Jenkins从初级到高级 1. 虚拟机安装 2. jenkins 安装 2.1 主要配置 2.2 安装Java环境 2.3 启动jenkins 2.4 开放8777端口供外网访问 2.5 外 ...

  6. 研发协同平台持续集成Jenkins作业设计演进

    源宝导读:Jenkins作为一个开源的持续集成工具,被大家广泛使用.本文将分享,Jenkins在明源云研发协同平台中的运用,以及在其作业设计方面的演进历程. 一.作业设计1.0 起初,为了尽快推出研发 ...

  7. 持续集成-jenkins

    持续集成(Continuous integration,简称 CI) 开发中,我们经常遇到一些奇怪问题,比如: 本地可以编译成功的代码但是同事们更新代码后编译出错; 在项目有多个Target(目标)的 ...

  8. 持续集成Jenkins

    一.简单慨念 持续集成(Continuous integration,简称 CI),随着近几年的发展,持续集成在项目中 得到了广泛的推广和应用. 软件集成就是用一种较好的方式,使多种软件的功能集成到一 ...

  9. 1.jenkins持续集成-jenkins安装

    1.为什们要使用jenkins Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目; 2.监控外部调用执行的工作. 2.安装jen ...

最新文章

  1. 10句“金玉良言”,助你面试成功!
  2. C 语言编程 — GDB 调试工具
  3. C#-几个STL相关
  4. [Leedcode][JAVA][第42题][动态规划][双指针][栈]
  5. ansible常用命令
  6. 20190806:字符串解密
  7. 确认从博客园搬家到FPA博客园
  8. OSGI的实现——Felix
  9. SQL注入(SQL注入(SQLi)攻击)攻击-脱库
  10. 深度可分离卷积(Depthwise seperable convolution)
  11. unity检测范围内敌人_《Unity3D-控制检测碰撞以后触发的事件之敌人的攻击行为》...
  12. 基于labview的虚拟示波器
  13. oracle delete一直没有结束怎么办 教你跟踪delete和rollback进度之-《delete跟踪篇》
  14. revo uninstaller pro 长期试用的正确姿势!!
  15. calcite解读专栏前言
  16. python获取时间戳算法_Python 获取时间,时间戳,时间差
  17. 如何给客户进行价值塑造?说一万句话,不如讲一个故事
  18. Wordpress 网站运维 | HTTPS安全证书绑定
  19. ZZ关于椭圆标准方程转参数方程
  20. 软件卸载后服务器还有个人信息吗,服务器软件的卸载记录

热门文章

  1. 用HTML和CSS制作一个网页
  2. KindEditor编辑器上传图片超过限制
  3. php怎么自动识别车牌号,你知道车牌识别系统是如何自动识别车牌的吗?
  4. Django设置成中文
  5. 三相桥式全控整流电路simulink仿真_可控硅整流器
  6. 事无巨细的Steam饥荒联机云服搭建教程(阿里云;CentOS7.7)【更新至后台运行】
  7. 微信小程序数组的合成方式
  8. 关于MIDI键盘的服务对接
  9. 360°环视性能倍增,瑞芯微首发全景环视芯片方案
  10. 正大国际:做外盘期货主帐户有什么风险?