持续集成交付CICD:Jenkins Sharedlibrary 共享库

目录

一、理论

1.共享库

2.共享库配置

3.使用共享库

4.共享库扩展

二、实验

1.连接共享库

2.使用共享库

三、问题

1.路径报错

[2.readJSON 报错](#2.readJSON 报错)


一、理论

1.共享库

(1)概念

bash 复制代码
1)共享库这并不是一个全新的概念,其实在编程语言Python中,我们可以将Python代码写到一个文件
中,当代码数量增加,我们可以将代码打包成模块然后再以import的方式使用此模块中的方法。

2)在Jenkins中使用Groovy语法,共享库中存储的每个文件都是一个groovy的类,每个文件(类)中
包含一个或多个方法。每个方法包含groovy语句块。

3)可以在Git等版本控制系统中创建一个项目用于存储共享库。共享流水线有助于减少冗余并保持代
码整洁。

(2)属性

bash 复制代码
1)共享库名称

2)共享库版本

3)共享库地址

(3)库结构

bash 复制代码
1)src: 类似于java的源码目录,执行流水线时会加载到class路径中。

2)vars: 存放全局变量脚本,小的功能函数。

3)resources: 存放资源文件,类似于配置信息文件。
bash 复制代码
├── src
│ └── org
│ └── devops
│ └── Tools.groovy
├── vars
│ └── GetHosts.groovy
│ └── GetCommitId.groovy
│ 
└── resources
│ └── org
│ └── devops
│ └── config.json

2.共享库配置

(1)创建一个共享库

bash 复制代码
可以直接在gitlab中创建一个公开类型的仓库,仓库名称自定义。公开类型的仓库是为了便于验
证,也可以创建私有类型的,但是需要提前配置好仓库的认证凭据。

(2). 创建groovy类文件

直接在gitlab仓库的页面操作即可

3.使用共享库

(1)系统配置

bash 复制代码
1)系统设置
Jenkins系统配置 -> Global Pipeline Libraries

首先,为共享库设置一个名称 mylib (自定义,无需与gitlab仓库一致),注意这个名称后
续在Jenkinsfile中引用。 再设置一个默认的版本,这里的版本是分支的名称。我默认配置的是 master版本。

2)配置共享仓库地址
接下来配置共享库的仓库地址,仓库在gitlab中,可以使用gitlab方式或者git方式。
如果仓库是私有的方式,需要在jenkins的凭据中添加一个账号用于下载共享库。

3)加载共享仓库
在Jenkinsfile中使用 @Library('mylib') _ 来加载共享库,注意后面符号 _ 用于加载。 类的
实例化 def mytools = new org.devops.jenkinstest() ,使用类中的方法`mytools.PrintMsg(msg)` 。

4.共享库扩展

(1)加载方式

bash 复制代码
1)加载mylib共享库
@Library('mylib') _

2)加载mylib共享库的1.0版本
@Library('mylib@1.0') _

3)加载多个共享库, mylib共享库的默认版本, yourlib共享库的2.0版本(分支)
@Library(['mylib', 'yourlib@2.0']) _

二、实验

1.连接共享库

(1)gitlab创建group

(2)创建新共享库项目jenkinslib

(3)创建完成

(4)打开web IDE

(5)创建src目录,存放类,函数和方法等源码文件

(6)创建vars目录,存放变量

(7)创建resource资源目录,存放json和txt等文件

(8)空目录不让提交

(9)resource资源目录新建json文件

(10)临时编辑json文件

(11)src目录下创建组织的包目录

(12)devops子目录下创建groovy类文件

(13)编辑代码

(14)vars目录下新建groovy文件

(15)定义一个方法

(16)提交到主分支

(17)已提交

(18)根目录新建Jenkinsfile

(19)提交到主分支

(20)克隆项目地

(21)jenkins添加gitlab凭据

(22)jenkins保存流水线共享库(注意此版本为master,现在有的新版本为main)

(23)项目流水线定义改为SCM

(24)gitlab修改jenkinsfile文件名.

(25)注释第2个java代码

(26)流水线构建成功

(27)默认checkout方法.

(28)生成关闭自动下载代码

(29)gitlab修改jenkinsfile

(30)查看已提交

(31)checkout SCM 步骤已消失

(32)构建成功

(33)进入WEb IDE剪切jenkinsfile代码

(34)粘贴代码到变量文件里(import放在函数外)

(35)修改流水线调用变量文件

(36)提交

(37)jenkins构建成功

(38)查看视图

(39)修改变量文件,以字典形式传行参

(40)流水线文件传实参(注意有逗号)

(41)提交

(42)构建成功,成功输出变量

2.使用共享库

(1)新建jenkinsfile文件

(2)生成库资源流水线代码

(3)修改新jenkinsfile文件代码

(4)已提交

(5)修改作业的jenkinsfile路径

(6)修改resources目录名

(7)更改代码(路径前增加.)

(8)输出成功

(9)修改代码readjson

(10)安装插件Pipeline Utility Steps

(11)构建成功

(12)修改README文档并提交

三、问题

1.路径报错

(1)问题

共享库流水线运行完,一直报如下错误

(2)原因分析

共享库资源路径错误

(3)解决方法

修改路径

修改前:

修改后:

成功:

2.readJSON 报错

(1)问题

(2)原因分析

readJSON命令书写错误

(3)解决方法

修改readJSON命令参数

修改前:

修改后:

成功:

相关推荐
Java王小怪1 小时前
Docker环境Redis没挂载保存数据
运维·docker·容器
你住过的屋檐1 小时前
【Nginx】linux上安装nginx
linux·运维·nginx
晓晓_za8986683 小时前
开源 GEO 优化源码二次开发:贴牌改造与业务模块扩展实践
java·运维·服务器·开发语言·性能优化·开源
云计算DevOps-韩老师4 小时前
【MySQL运维DBA】【SQL基础系列002篇】
运维·mysql·dba
DBA大董4 小时前
TDengine3.0 DBA常用的运维命令和SQL2
运维·数据库·时序数据库·dba·tdengine
会飞的土拨鼠呀4 小时前
Linux的存储使用率应该如何计算
linux·运维·服务器
Elastic 中国社区官方博客5 小时前
OpenTelemetry Java 扩展:无需分叉 agent 即可自定义追踪
java·大数据·运维·开发语言·数据库·人工智能·elasticsearch
aaaBsBsBsB5 小时前
k8s pod管理
运维·docker·容器
志栋智能6 小时前
迈向真正的超自动化巡检
运维·自动化
荣合技术服务6 小时前
电脑多,单个加域麻烦?下载此AD域加域助手,批量加域速度快
运维·服务器·ad域控