持续集成交付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命令参数

修改前:

修改后:

成功:

相关推荐
羑悻的小杀马特1 分钟前
从写 YAML 到集群自愈:KES-Operator 把 KES 集群接进 Kubernetes 原生体系
运维·数据库·容器·kubernetes
李白客6 分钟前
数据库管理工具怎么选?Navicat、DataGrip、DBeaver 六维横向对比与选型建议
运维·数据库
iPad协议个微协议9 分钟前
微信二次开发如何用 WechatApi 打通消息、客户和业务系统
运维·微信·自动化·微信开发·wechatapi·个人微信开发
蓝速科技9 分钟前
蓝速 K10 三防平板在工业恶劣工况下的选型与应用指南
大数据·运维·数据库·人工智能·科技
Ahtacca24 分钟前
Linux 基础实验:从终端操作到 C 语言编译
linux·运维·运维开发·虚拟机
智能运维指南28 分钟前
持续集成平台怎么选?从Jenkins迁移、信创适配到质量门禁的全维评估
运维·devops·嘉为蓝鲸
我要见SA姐111 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
Elastic 中国社区官方博客12 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
fengkai454513 小时前
八、Docker详解4-5
运维·docker
智恒百亿13 小时前
RTX 5090 八卡服务器 vs RTX PRO 6000 整机:AI 推理、微调与渲染选型部署指南
运维·服务器·rtx5090